Loan Interest Rate Prediction¶

By: Jasmine Tzou

variables:¶

  1. X1: Interest Rate on the loan (y, target variable)
  2. X2: A unique id for the loan
  3. X3: A unique id assigned for the borrower
  4. X4: Loan amount requested
  5. X5: Loan amount funded
  6. X6: Investor-funded portion of loan
  7. X7: Number of payments (36 or 60)
  8. X8: Loan grade
  9. X9: Loan subgrade
  10. X10: Employer or job title (self-filled)
  11. X11: Number of years employed (0 to 10; 10 = 10 or more)
  12. X12: Home ownership status: RENT, OWN, MORTGAGE, OTHER
  13. X13: Annual income of borrower
  14. X14: Income verified, not verified, or income source was verified
  15. X15: Date loan was issued
  16. X16: Reason for loan provided by borrower
  17. X17: Loan category, as provided by borrower
  18. X18: Loan title, as provided by borrower
  19. X19: First 3 numbers of zip code
  20. X20: State of borrower
  21. X21: A ratio calculated using the borrower's total monthly debt payments on the total debt obligations, excluding mortgage and the requested loan, divided by the borrower's self-reported monthly income
  22. X22: The number of 30+ days past-due incidences of delinquency in the borrower's credit file for the past 2 years
  23. X23: Date the borrower's earliest reported credit line was opened
  24. X24: Number of inquiries by creditors during the past 6 months
  25. X25: Number of months since the borrower's last delinquency
  26. X26: Number of months since the last public record
  27. X27: Number of open credit lines in the borrower's credit file
  28. X28: Number of derogatory public records
  29. X29: Total credit revolving balance
  30. X30: Revolving line utilization rate, or the amount of credit the borrower is using relative to all available revolving credit
  31. X31: The total number of credit lines currently in the borrower's credit file
  32. X32: The initial listing status of the loan. Possible values are: W, F!

Import packages¶

In [1]:
%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
from datetime import datetime

from sklearn.model_selection import train_test_split
from sklearn.impute import KNNImputer

# Importing Classifier Modules
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVC, LinearSVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import Perceptron
from sklearn.linear_model import SGDClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV

#to be abole to view all columns and rows
pd.set_option("display.max_columns", None)
pd.set_option("display.max_rows", None)

import warnings
warnings.filterwarnings("ignore")

1.Data cleaning and preprocessing¶

1.1 Load data¶

In [2]:
df=pd.read_csv('Data for Cleaning & Modeling.csv',low_memory=False)
df.head(5)
Out[2]:
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31 X32
0 11.89% 54734.0 80364.0 $25,000 $25,000 $19,080 36 months B B4 NaN < 1 year RENT 85000.0 VERIFIED - income Aug-09 Due to a lack of personal finance education an... debt_consolidation Debt consolidation for on-time payer 941xx CA 19.48 0.0 Feb-94 0.0 NaN NaN 10.0 0.0 28854.0 52.10% 42.0 f
1 10.71% 55742.0 114426.0 $7,000 $7,000 $673 36 months B B5 CNN < 1 year RENT 65000.0 not verified May-08 Just want to pay off the last bit of credit ca... credit_card Credit Card payoff 112xx NY 14.29 0.0 Oct-00 0.0 NaN NaN 7.0 0.0 33623.0 76.70% 7.0 f
2 16.99% 57167.0 137225.0 $25,000 $25,000 $24,725 36 months D D3 Web Programmer 1 year RENT 70000.0 VERIFIED - income Aug-14 Trying to pay a friend back for apartment brok... debt_consolidation mlue 100xx NY 10.50 0.0 Jun-00 0.0 41.0 NaN 10.0 0.0 19878.0 66.30% 17.0 f
3 13.11% 57245.0 138150.0 $1,200 $1,200 $1,200 36 months C C2 city of beaumont texas 10+ years OWN 54000.0 not verified Mar-10 If funded, I would use this loan consolidate t... debt_consolidation zxcvb 777xx TX 5.47 0.0 Jan-85 0.0 64.0 NaN 5.0 0.0 2584.0 40.40% 31.0 f
4 13.57% 57416.0 139635.0 $10,800 $10,800 $10,692 36 months C C3 State Farm Insurance 6 years RENT 32000.0 not verified Nov-09 I currently have a personal loan with Citifina... debt_consolidation Nicolechr1978 067xx CT 11.63 0.0 Dec-96 1.0 58.0 NaN 14.0 0.0 3511.0 25.60% 40.0 f

Rename column name¶

Change the column name, so that it will be more easy to see

In [3]:
df.columns = ['Interest_Rate', 'loanID', 'borID', 'Loan_Requested', 'Loan_Funded', 'Investor_portion', \
                'Number_of_Payments', 'Loan_Grade','loanSGrade','job', 'Years_Employed', 'Home_Ownership',\
                'Annual_Income', 'Verification', 'Issued_MonYY','reason_Loan', 'loan_Cat','loanTitle', 'zip_3',\
                'State', 'Debit_Payment_Ratio', 'Delinquency_Frequency','Credit_Earliest_MonYY','Inquiries_Count',\
                'Delinquency_Recency', 'Public_Record_Recency','Open_Credit_Line_Count', 'Derogatory_Public_Record_Count',\
                'Total_Credit','Credit_Utilization_Rate','Total_Credit_Line_Count','Initial_Status']

df.head(5)
Out[3]:
Interest_Rate loanID borID Loan_Requested Loan_Funded Investor_portion Number_of_Payments Loan_Grade loanSGrade job Years_Employed Home_Ownership Annual_Income Verification Issued_MonYY reason_Loan loan_Cat loanTitle zip_3 State Debit_Payment_Ratio Delinquency_Frequency Credit_Earliest_MonYY Inquiries_Count Delinquency_Recency Public_Record_Recency Open_Credit_Line_Count Derogatory_Public_Record_Count Total_Credit Credit_Utilization_Rate Total_Credit_Line_Count Initial_Status
0 11.89% 54734.0 80364.0 $25,000 $25,000 $19,080 36 months B B4 NaN < 1 year RENT 85000.0 VERIFIED - income Aug-09 Due to a lack of personal finance education an... debt_consolidation Debt consolidation for on-time payer 941xx CA 19.48 0.0 Feb-94 0.0 NaN NaN 10.0 0.0 28854.0 52.10% 42.0 f
1 10.71% 55742.0 114426.0 $7,000 $7,000 $673 36 months B B5 CNN < 1 year RENT 65000.0 not verified May-08 Just want to pay off the last bit of credit ca... credit_card Credit Card payoff 112xx NY 14.29 0.0 Oct-00 0.0 NaN NaN 7.0 0.0 33623.0 76.70% 7.0 f
2 16.99% 57167.0 137225.0 $25,000 $25,000 $24,725 36 months D D3 Web Programmer 1 year RENT 70000.0 VERIFIED - income Aug-14 Trying to pay a friend back for apartment brok... debt_consolidation mlue 100xx NY 10.50 0.0 Jun-00 0.0 41.0 NaN 10.0 0.0 19878.0 66.30% 17.0 f
3 13.11% 57245.0 138150.0 $1,200 $1,200 $1,200 36 months C C2 city of beaumont texas 10+ years OWN 54000.0 not verified Mar-10 If funded, I would use this loan consolidate t... debt_consolidation zxcvb 777xx TX 5.47 0.0 Jan-85 0.0 64.0 NaN 5.0 0.0 2584.0 40.40% 31.0 f
4 13.57% 57416.0 139635.0 $10,800 $10,800 $10,692 36 months C C3 State Farm Insurance 6 years RENT 32000.0 not verified Nov-09 I currently have a personal loan with Citifina... debt_consolidation Nicolechr1978 067xx CT 11.63 0.0 Dec-96 1.0 58.0 NaN 14.0 0.0 3511.0 25.60% 40.0 f
In [4]:
df.shape
Out[4]:
(400000, 32)

Mising value¶

From the chart below, that there's a lot of missing value. Theoretically, 25% to 30% is the maximum missing values are allowed, beyond which we might want to drop the variable unless that variable is significant to the target variable.

In [5]:
na_count=df.isna().sum()
In [6]:
df_na = pd.DataFrame(na_count)
df_na['NA_count'] = df_na
df_na['NA_%'] = (df_na['NA_count'] / df.shape[0])*100
df_na = df_na.iloc[:,1:3]
df_na
Out[6]:
NA_count NA_%
Interest_Rate 61010 15.25250
loanID 1 0.00025
borID 1 0.00025
Loan_Requested 1 0.00025
Loan_Funded 1 0.00025
Investor_portion 1 0.00025
Number_of_Payments 1 0.00025
Loan_Grade 61270 15.31750
loanSGrade 61270 15.31750
job 23986 5.99650
Years_Employed 17538 4.38450
Home_Ownership 61361 15.34025
Annual_Income 61028 15.25700
Verification 1 0.00025
Issued_MonYY 1 0.00025
reason_Loan 276440 69.11000
loan_Cat 1 0.00025
loanTitle 19 0.00475
zip_3 1 0.00025
State 1 0.00025
Debit_Payment_Ratio 1 0.00025
Delinquency_Frequency 1 0.00025
Credit_Earliest_MonYY 1 0.00025
Inquiries_Count 1 0.00025
Delinquency_Recency 218802 54.70050
Public_Record_Recency 348845 87.21125
Open_Credit_Line_Count 1 0.00025
Derogatory_Public_Record_Count 1 0.00025
Total_Credit 1 0.00025
Credit_Utilization_Rate 267 0.06675
Total_Credit_Line_Count 1 0.00025
Initial_Status 1 0.00025

1.2 Data Preprocessing & Exploratory Data Analysis¶

There is 1 row that has no value, except Interest_Rate, will drop the row

In [7]:
df[df.Loan_Requested.isnull()]
Out[7]:
Interest_Rate loanID borID Loan_Requested Loan_Funded Investor_portion Number_of_Payments Loan_Grade loanSGrade job Years_Employed Home_Ownership Annual_Income Verification Issued_MonYY reason_Loan loan_Cat loanTitle zip_3 State Debit_Payment_Ratio Delinquency_Frequency Credit_Earliest_MonYY Inquiries_Count Delinquency_Recency Public_Record_Recency Open_Credit_Line_Count Derogatory_Public_Record_Count Total_Credit Credit_Utilization_Rate Total_Credit_Line_Count Initial_Status
364111 7.69% NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
In [8]:
df = df.dropna(subset = ['Loan_Requested'],axis =0)
  • Interest_Rate: \ Since target variable controls how the learning algorithm learns, it is not advised to impute it. Therefore, will drop the missing values.
In [9]:
df=df.dropna(subset=['Interest_Rate'],axis=0)
  • reason_Loan has over 69% of missing value, and the inofrmation is not easy to categorized --> drop it
  • Delinquency_Recency has over 54% of missing value --> drop it
  • Public_Record_Recency has over 87% of missing value --> drop it
In [10]:
df=df.drop(columns = ['reason_Loan', 'loanTitle','Delinquency_Recency', 'Public_Record_Recency'])
  • loanID, borID is the identification of each record, does not help predict the interest rate --> drop it
  • Loan_Grade and loanSGrade represent the same thing, therefore, will only keep Loan_Grade since loan subgrade is too complex --> drop loanSGrade
  • zip_3 and state both represent the geography information, therefore will only keep state, since zip_3 is too detail--> drop zip_3
In [11]:
print("Loan_garde count:"+str(len(df.Loan_Grade.value_counts())))
print("Loan_subgarde count:"+str(len(df.loanSGrade.value_counts())))
Loan_garde count:7
Loan_subgarde count:35
In [12]:
df=df.drop(columns = ['loanID', 'borID','loanSGrade','zip_3'])
  • job contians job role, description, whch does not contain constant information --> drop it
In [13]:
df=df.drop(columns = ['job'])
In [14]:
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 338989 entries, 0 to 399999
Data columns (total 23 columns):
 #   Column                          Non-Null Count   Dtype  
---  ------                          --------------   -----  
 0   Interest_Rate                   338989 non-null  object 
 1   Loan_Requested                  338989 non-null  object 
 2   Loan_Funded                     338989 non-null  object 
 3   Investor_portion                338989 non-null  object 
 4   Number_of_Payments              338989 non-null  object 
 5   Loan_Grade                      287123 non-null  object 
 6   Years_Employed                  324195 non-null  object 
 7   Home_Ownership                  287030 non-null  object 
 8   Annual_Income                   287238 non-null  float64
 9   Verification                    338989 non-null  object 
 10  Issued_MonYY                    338989 non-null  object 
 11  loan_Cat                        338989 non-null  object 
 12  State                           338989 non-null  object 
 13  Debit_Payment_Ratio             338989 non-null  float64
 14  Delinquency_Frequency           338989 non-null  float64
 15  Credit_Earliest_MonYY           338989 non-null  object 
 16  Inquiries_Count                 338989 non-null  float64
 17  Open_Credit_Line_Count          338989 non-null  float64
 18  Derogatory_Public_Record_Count  338989 non-null  float64
 19  Total_Credit                    338989 non-null  float64
 20  Credit_Utilization_Rate         338765 non-null  object 
 21  Total_Credit_Line_Count         338989 non-null  float64
 22  Initial_Status                  338989 non-null  object 
dtypes: float64(8), object(15)
memory usage: 62.1+ MB

Interest Rate¶

In [15]:
#Interest Rate on the loan
df['Interest_Rate'] =df['Interest_Rate'].str.replace("%","") 
df['Interest_Rate'] = df['Interest_Rate'].astype(float)
#df.Interest_Rate = df.Interest_Rate.replace('(%)','', regex = True).astype(float)
In [16]:
sns.distplot(df['Interest_Rate'])
plt.title("Distribution of Interest Rate")
plt.xlabel("Interest Rate in %")
plt.ylabel("Occurance in %")
plt.show()

From the above plot, we can see that the interest rate has the majority in 15%, and range from around 5% to 27%.

Loan_Requested, Loan_Funded, Investor_portion¶

In [17]:
df.Loan_Requested = df.Loan_Requested.replace('[\$\,]','', regex = True).astype(int)
df.Loan_Funded = df.Loan_Funded.replace('[\$\,]','', regex = True).astype(int)
df.Investor_portion = df.Investor_portion.replace('[\$\,]','', regex = True).astype(int)
In [18]:
#loan_requested
print(df['Loan_Requested'].describe())
sns.distplot(df[df['Loan_Requested'].notnull()]['Loan_Requested'])
count    338989.000000
mean      14276.968353
std        8252.264104
min         500.000000
25%        8000.000000
50%       12000.000000
75%       20000.000000
max       35000.000000
Name: Loan_Requested, dtype: float64
Out[18]:
<AxesSubplot:xlabel='Loan_Requested', ylabel='Density'>
In [19]:
#loan_funded
print(df['Loan_Funded'].describe())
sns.distplot(df[df['Loan_Funded'].notnull()]['Loan_Funded'])
count    338989.000000
mean      14248.306140
std        8238.064335
min         500.000000
25%        8000.000000
50%       12000.000000
75%       20000.000000
max       35000.000000
Name: Loan_Funded, dtype: float64
Out[19]:
<AxesSubplot:xlabel='Loan_Funded', ylabel='Density'>
In [20]:
#investor_portion
print(df['Investor_portion'].describe())
sns.distplot(df[df['Investor_portion'].notnull()]['Investor_portion'])
count    338989.000000
mean      14182.000445
std        8255.138412
min           0.000000
25%        8000.000000
50%       12000.000000
75%       19900.000000
max       35000.000000
Name: Investor_portion, dtype: float64
Out[20]:
<AxesSubplot:xlabel='Investor_portion', ylabel='Density'>

From the above analysis and plots, we can see that Loan_Requested, Loan_Funded, Investor_portion has similar distribution, will further do the correlation plot, to see whether they are highly correlated.

In [21]:
cor=df.iloc[:,0:4]
heatmap = sns.heatmap(cor.corr(), vmin=-1, vmax=1, annot=True)
heatmap.set_title('Correlation Heatmap', fontdict={'fontsize':12}, pad=12);

We can see that there's high correlation (nearly one to one) with the loan_requested, Investor_potion, and loan funded. Therefore, we'll just leave 'loan_requested', since putting them will add dimensionality but do not provide that much extra information.

In [22]:
df=df.drop(['Loan_Funded','Investor_portion'],axis=1)
In [23]:
sns.distplot(df['Loan_Requested'])
plt.title("Distribution and Skew of Loan_Requested")
plt.xlabel("Interest Rate in %")
plt.show()

Number_of_Payments¶

In [24]:
df['Number_of_Payments'].value_counts()
Out[24]:
 36 months    247791
 60 months     91198
Name: Number_of_Payments, dtype: int64
In [25]:
#create a category variable, based on Number_of_Payments
df['pay_36months'] = df['Number_of_Payments'].apply(lambda x: 1 if x == '36 months' else 0)
In [26]:
df = df.drop('Number_of_Payments', axis=1)

Loan_grade¶

In [27]:
#df['Loan_Grade'].value_counts()
ax = sns.countplot(x=df['Loan_Grade'],order=df['Loan_Grade'].value_counts(ascending=False).index)
abs_values = df['Loan_Grade'].value_counts(ascending=False).values
ax.bar_label(container=ax.containers[0])
plt.show()

since there're 61,270 (about 15%) of missing value in the Loan grade, will create a new category as "others" to inpute the missing values, rather than interpolate them.

In [28]:
df["Loan_Grade"] = df["Loan_Grade"].fillna('Others').astype("category")
In [29]:
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Loan_Grade'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
Out[29]:
<seaborn.axisgrid.PairGrid at 0x7f7c84205040>

From the above plot, we can see that loan grades has high correlation with interest rate.

Process Years_Employed¶

In [30]:
sns.set(rc={"figure.figsize":(10,6)})
sns.histplot(df[df["Years_Employed"].notnull()]["Years_Employed"])
plt.show()
df["Years_Employed"].describe()
Out[30]:
count        324195
unique           11
top       10+ years
freq         108491
Name: Years_Employed, dtype: object
In [31]:
#clean the data form and 
df['Years_Employed']= df['Years_Employed'].str.replace('years','').str.replace('year','').str.replace('+','')
df['Years_Employed']= df['Years_Employed'].str.replace('< 1','0')
df['Years_Employed']= df['Years_Employed'].astype('float')
In [32]:
#plot the years employeed and interest rate
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Years_Employed'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
Out[32]:
<seaborn.axisgrid.PairGrid at 0x7f7c8890f850>

Since there's about 4% of missing value in Years_Employeed, will use interpolate to fill in the missing value

In [33]:
df['Years_Employed']=df['Years_Employed'].interpolate()

Since the 10 represent the years employeed from 10 years to more, will change to category so that each category means a range.

In [34]:
new=['0-4','5-9','10']
df['Years_Employed']= [new[int(x)//5] if x!='Other' else 'Other' for x in df['Years_Employed']]

print(df['Years_Employed'].value_counts())
print(df.groupby('Years_Employed')[['Years_Employed','Interest_Rate']].mean())

sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Years_Employed'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
0-4    128696
10     110301
5-9     99992
Name: Years_Employed, dtype: int64
                Interest_Rate
Years_Employed               
0-4                 13.744290
10                  14.143337
5-9                 13.988912
Out[34]:
<seaborn.axisgrid.PairGrid at 0x7f7c87b75d90>

Process Home ownership¶

In [35]:
df['Home_Ownership'].value_counts()
Out[35]:
MORTGAGE    145958
RENT        115958
OWN          24976
OTHER          107
NONE            30
ANY              1
Name: Home_Ownership, dtype: int64
In [36]:
df['Home_Ownership']=df['Home_Ownership'].str.replace('NONE','OTHER').str.replace('ANY','OTHER')
df['Home_Ownership']=df['Home_Ownership'].fillna("OTHER")
df['Home_Ownership'] = df['Home_Ownership'].astype("category")
df['Home_Ownership'].value_counts()
Out[36]:
MORTGAGE    145958
RENT        115958
OTHER        52097
OWN          24976
Name: Home_Ownership, dtype: int64
In [37]:
sns.countplot(x='Home_Ownership',data=df)
Out[37]:
<AxesSubplot:xlabel='Home_Ownership', ylabel='count'>

From the above plot, we can see that mortgage is the majority.

In [38]:
df.groupby('Home_Ownership')[['Home_Ownership','Interest_Rate']].mean()
Out[38]:
Interest_Rate
Home_Ownership
MORTGAGE 13.662988
OTHER 13.985585
OWN 14.092569
RENT 14.253723
In [39]:
df.shape
Out[39]:
(338989, 21)

Remove outlier for annual income¶

In [40]:
df['Annual_Income'].describe()
Out[40]:
count    2.872380e+05
mean     7.315146e+04
std      5.618967e+04
min      3.000000e+03
25%      4.500000e+04
50%      6.300000e+04
75%      8.807875e+04
max      7.500000e+06
Name: Annual_Income, dtype: float64
In [41]:
sns.distplot(df[df['Annual_Income'].notnull()]['Annual_Income'])
Out[41]:
<AxesSubplot:xlabel='Annual_Income', ylabel='Density'>
In [42]:
fig = px.box(df, x="Annual_Income")
fig.show()

From the plots above, we can see that there's a few annual income is really high, and since they're 61,028 missing values, in order to not affect too much by these outlier, will remove them which is higher than upper fence($1,526,060), in order to fill in the NAs.

In [43]:
print(len(df[df.Annual_Income>1526060]))
15
In [44]:
#only select which is smaller than 1526060
df= df.loc[~(df['Annual_Income']>1526060)]
df.shape
Out[44]:
(338974, 21)
In [45]:
#input na value with interpolate, since it will input value with the nearest distance
df.Annual_Income=df.Annual_Income.interpolate()
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 338974 entries, 0 to 399999
Data columns (total 21 columns):
 #   Column                          Non-Null Count   Dtype   
---  ------                          --------------   -----   
 0   Interest_Rate                   338974 non-null  float64 
 1   Loan_Requested                  338974 non-null  int64   
 2   Loan_Grade                      338974 non-null  category
 3   Years_Employed                  338974 non-null  object  
 4   Home_Ownership                  338974 non-null  category
 5   Annual_Income                   338974 non-null  float64 
 6   Verification                    338974 non-null  object  
 7   Issued_MonYY                    338974 non-null  object  
 8   loan_Cat                        338974 non-null  object  
 9   State                           338974 non-null  object  
 10  Debit_Payment_Ratio             338974 non-null  float64 
 11  Delinquency_Frequency           338974 non-null  float64 
 12  Credit_Earliest_MonYY           338974 non-null  object  
 13  Inquiries_Count                 338974 non-null  float64 
 14  Open_Credit_Line_Count          338974 non-null  float64 
 15  Derogatory_Public_Record_Count  338974 non-null  float64 
 16  Total_Credit                    338974 non-null  float64 
 17  Credit_Utilization_Rate         338750 non-null  object  
 18  Total_Credit_Line_Count         338974 non-null  float64 
 19  Initial_Status                  338974 non-null  object  
 20  pay_36months                    338974 non-null  int64   
dtypes: category(2), float64(9), int64(2), object(8)
memory usage: 52.4+ MB

Check the distribution, after removing outlier and input the missing value

In [46]:
sns.distplot(df['Annual_Income'])
Out[46]:
<AxesSubplot:xlabel='Annual_Income', ylabel='Density'>
In [47]:
df.shape
Out[47]:
(338974, 21)

originally want to use KNN methods to input the NAs, but due to computing limitation can not reach, will put code below for reference

In [48]:
#KNN to fill NAs
#https://medium.com/@kyawsawhtoon/a-guide-to-knn-imputation-95e2dc496e
#from sklearn.preprocessing import MinMaxScaler

#scaler = MinMaxScaler()
#df = pd.DataFrame(scaler.fit_transform(df), columns = df.columns)
#df.head()

#from sklearn.impute import KNNImputer
#imputer = KNNImputer(n_neighbors=5)
#df1 = pd.DataFrame(imputer.fit_transform(df1),columns = df1.Annual_Income)

Process Verification to category¶

In [49]:
df['Verification'].value_counts()
df['Verification'] = df['Verification'].astype("category")
df['Verification'].value_counts()
Out[49]:
VERIFIED - income           127036
not verified                107868
VERIFIED - income source    104070
Name: Verification, dtype: int64

Since VERIFIED - income and VERIFIED - income source are both menaing they are verified, will combine them to new category "verified"

In [50]:
df["Verification"] = df["Verification"].str.replace("VERIFIED - income", "verified").str.replace("verified source","verified")
df['Verification'].value_counts()
Out[50]:
verified        231106
not verified    107868
Name: Verification, dtype: int64
In [51]:
sns.set(style="whitegrid")
i = sns.PairGrid(df, x_vars = ['Verification'], y_vars = 'Interest_Rate', size = 5)
i.map(sns.pointplot, color = sns.xkcd_rgb['red'])
i.fig.set_size_inches(7,5)
i.set(ylim = (5,26));

Issued time and credit earliest time, process the time to month, and year the request is issued, and years with credit¶

In [52]:
# issued_date
df['issued_month'] = df['Issued_MonYY'].apply(lambda x: str(x)[:3])
df['issued_year'] = df['Issued_MonYY'].apply(lambda x: str(x)[-2:])

# credit_earliest date
df['credit_earliest_month'] = df['Credit_Earliest_MonYY'].apply(lambda x: str(x)[:3])
df['credit_earliest_year'] = df['Credit_Earliest_MonYY'].apply(lambda x: str(x)[-2:])

df = df.drop(['Issued_MonYY', 'Credit_Earliest_MonYY' ], axis=1)
In [53]:
df['issued_month'].unique()
Out[53]:
array(['Aug', 'May', 'Mar', 'Nov', 'Apr', 'Sep', 'Feb', 'Dec', 'Jun',
       'Oct', 'Jul', 'Jan'], dtype=object)
In [54]:
df['issued_year'].unique()
Out[54]:
array(['09', '08', '14', '10', '12', '07', '11', '13'], dtype=object)
In [55]:
df['credit_earliest_month'].unique()
Out[55]:
array(['Feb', 'Oct', 'Jun', 'Jan', 'Dec', 'Apr', 'Nov', 'Jul', 'May',
       'Aug', 'Sep', 'Mar'], dtype=object)
In [56]:
df['credit_earliest_year'].unique()
Out[56]:
array(['94', '00', '85', '96', '98', '93', '01', '06', '95', '97', '90',
       '91', '03', '05', '75', '02', '88', '86', '87', '92', '89', '99',
       '04', '83', '80', '84', '71', '63', '81', '76', '82', '79', '72',
       '78', '73', '77', '74', '69', '70', '68', '67', '64', '07', '61',
       '62', '66', '65', '54', '08', '50', '46', '59', '56', '09', '58',
       '60', '10', '55', '53', '57', '11', '44', '51', '49'], dtype=object)
In [57]:
# Define month convertion function
def month(x):
    months = {
        "jan": 1,
        "feb": 2,
        "mar": 3,
        "apr": 4,
        "may": 5,
        "jun": 6,
        "jul": 7,
        "aug": 8,
        "sep": 9,
        "oct": 10,
        "nov": 11,
        "dec": 12,
    }
    try: # convert all the month into lowercase to match them to numbers
        x = months[x.strip()[:3].lower()]
        return x
    except:
        pass

# Define year convertion function
# Since it's only 2023 now, I assume that last 2 digits greater than 30 is in 1900 century
# for last 2 digits less than 30, I assume that it's in 2000 century

def year(x):
    x = x.strip()[-2:]
    try:
        if float(x) > 30: 
            x = "19" + str(x)
        else:             # 
            x = "20" + str(x)
        return int(x)
    except:
        pass
In [58]:
# change issued_date & credit_earliest_date's Month & Year
df['issued_month'] = df['issued_month'].apply(lambda x: month(x))
df['credit_earliest_month']  = df['credit_earliest_month'] .apply(lambda x: month(x))
df['issued_year'] = df['issued_year'].apply(lambda x: year(x))
df['credit_earliest_year'] = df['credit_earliest_year'].apply(lambda x: year(x))
  • issued month/year
In [59]:
countplt, ax = plt.subplots(figsize = (10,7))

ax = sns.countplot(x='issued_month', 
              data=df,
             order = df['issued_month'].value_counts().index)

From the above plot, we can see that July has the most issued loan cases.

In [60]:
countplt, ax = plt.subplots(figsize = (10,7))

ax = sns.countplot(x='issued_year', 
              data=df,
             order = df['issued_year'].value_counts().index)

From the above plot, we can see that 2014 has the most issued loan cases.

  • credit earlist month/year
In [61]:
countplt, ax = plt.subplots(figsize = (10,7))

ax = sns.countplot(x='credit_earliest_month', 
              data=df,
             order = df['credit_earliest_month'].value_counts().index)
In [62]:
countplt, ax = plt.subplots(figsize = (10,7))

ax = sns.countplot(x='credit_earliest_year', 
              data=df,
             order = df['credit_earliest_year'].value_counts().index[:10])

Initial status for the loan request¶

In [63]:
df['Initial_Status'].value_counts()
Out[63]:
f    232588
w    106386
Name: Initial_Status, dtype: int64
In [64]:
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Initial_Status'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
Out[64]:
<seaborn.axisgrid.PairGrid at 0x7f7ca4a50e80>

Loan category¶

In [65]:
df['loan_Cat'].value_counts()
#punc = ['major_purchase','small_business','car','medical','moving','wedding','vacation',]
#for i in punc:
#    a = [x.replace(i,'') for x in a]
Out[65]:
debt_consolidation    198217
credit_card            75678
home_improvement       19622
other                  17154
major_purchase          7312
small_business          5359
car                     4115
medical                 3328
moving                  2138
wedding                 1934
vacation                1848
house                   1723
educational              279
renewable_energy         267
Name: loan_Cat, dtype: int64
In [66]:
sns.set(style="whitegrid")
i = sns.PairGrid(df, x_vars = ['loan_Cat'], y_vars = 'Interest_Rate', size = 5,
                hue_order= df['Interest_Rate'])
i.map(sns.pointplot, color = sns.xkcd_rgb['red'])
i.fig.set_size_inches(15,5)
for ax in i.axes.flat:
    plt.setp(ax.get_xticklabels(), rotation=90)
i.set(ylim = (5,26));

State¶

In [67]:
#change satet into 5 regions in US
states = {
    "AK": "Other",
    "AL": "South",
    "AR": "South",
    "AS": "Other",
    "AZ": "West",
    "CA": "West",
    "CO": "West",
    "CT": "Northeast",
    "DC": "Northeast",
    "DE": "Northeast",
    "FL": "South",
    "GA": "South",
    "GU": "Other",
    "HI": "Other",
    "IA": "Midwest",
    "ID": "West",
    "IL": "Midwest",
    "IN": "Midwest",
    "KS": "Midwest",
    "KY": "South",
    "LA": "South",
    "MA": "Northeast",
    "MD": "Northeast",
    "ME": "Northeast",
    "MI": "West",
    "MN": "Midwest",
    "MO": "Midwest",
    "MP": "Other",
    "MS": "South",
    "MT": "West",
    "NA": "Other",
    "NC": "South",
    "ND": "Midwest",
    "NE": "West",
    "NH": "Northeast",
    "NJ": "Northeast",
    "NM": "West",
    "NV": "West",
    "NY": "Northeast",
    "OH": "Midwest",
    "OK": "South",
    "OR": "West",
    "PA": "Northeast",
    "PR": "Other",
    "RI": "Northeast",
    "SC": "South",
    "SD": "Midwest",
    "TN": "South",
    "TX": "South",
    "UT": "West",
    "VA": "South",
    "VI": "Other",
    "VT": "Northeast",
    "WA": "West",
    "WI": "Midwest",
    "WV": "South",
    "WY": "West",
}


df["Region"] = df["State"].map(states)

df = df.drop("State", axis=1)
In [68]:
df["Region"] = df["Region"].astype("category")
In [69]:
df['Region'].value_counts()
Out[69]:
South        107299
West          99157
Northeast     81302
Midwest       48471
Other          2745
Name: Region, dtype: int64
In [70]:
#df1.groupby('State')[['State','Interest_Rate']].mean()
df.groupby('Region')[['Region','Interest_Rate']].mean()
#the interest rate in west is slightly lower than other region
Out[70]:
Interest_Rate
Region
Midwest 13.942030
Northeast 13.938972
Other 14.446179
South 13.981531
West 13.902650
In [71]:
#visualization on the 
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Region'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
Out[71]:
<seaborn.axisgrid.PairGrid at 0x7f7c92b884f0>

Debit_Payment_Ratio¶

In [72]:
sns.distplot(df[['Debit_Payment_Ratio']]['Debit_Payment_Ratio'],bins = 10);
df['Debit_Payment_Ratio'].describe()
Out[72]:
count    338974.000000
mean         16.997916
std           7.696701
min           0.000000
25%          11.250000
50%          16.700000
75%          22.500000
max          39.990000
Name: Debit_Payment_Ratio, dtype: float64

delinquency_frequency¶

In [73]:
df['Delinquency_Frequency'].value_counts()
Out[73]:
0.0     280238
1.0      39793
2.0      11493
3.0       3964
4.0       1658
5.0        841
6.0        441
7.0        226
8.0        111
9.0         68
10.0        48
11.0        27
12.0        23
13.0        13
18.0         6
14.0         6
16.0         5
15.0         4
17.0         3
19.0         2
24.0         1
29.0         1
22.0         1
21.0         1
Name: Delinquency_Frequency, dtype: int64
In [74]:
sns.distplot(df[['Delinquency_Frequency']]['Delinquency_Frequency']);
df['Delinquency_Frequency'].describe()
Out[74]:
count    338974.000000
mean          0.274284
std           0.779301
min           0.000000
25%           0.000000
50%           0.000000
75%           0.000000
max          29.000000
Name: Delinquency_Frequency, dtype: float64

since there's 228,206 is 0 requency, which accounts for about 82% of the data, therefore, will trun this column into categorical, turn numbers other than 0 into 1.

In [75]:
df['has_delinquency'] = df['Delinquency_Frequency'].apply(lambda x: 1 if x != 0 else 0)
df['has_delinquency']=df['has_delinquency'].astype("category")
df = df.drop(columns = ['Delinquency_Frequency'])
In [76]:
df['has_delinquency'].value_counts()
Out[76]:
0    280238
1     58736
Name: has_delinquency, dtype: int64

Process Open_Credit_Line_Count¶

In [77]:
df['Open_Credit_Line_Count'].describe()
Out[77]:
count    338974.000000
mean         11.117991
std           4.896049
min           0.000000
25%           8.000000
50%          10.000000
75%          14.000000
max          76.000000
Name: Open_Credit_Line_Count, dtype: float64
In [78]:
#df.hist(column = 'Open_Credit_Line_Count')
sns.distplot(df['Open_Credit_Line_Count'])
Out[78]:
<AxesSubplot:xlabel='Open_Credit_Line_Count', ylabel='Density'>

From the above plot and description of the column, we know that the data is right-skewed, and the min=0, therefore, will apply log transformation for this column.

In [79]:
df['log_Open_Credit_Line_Count'] = np.log10(df['Open_Credit_Line_Count'])
df['log_Open_Credit_Line_Count'] .replace([-np.inf], 0, inplace = True)
df=df.drop("Open_Credit_Line_Count", axis=1)
df.head(5)
Out[79]:
Interest_Rate Loan_Requested Loan_Grade Years_Employed Home_Ownership Annual_Income Verification loan_Cat Debit_Payment_Ratio Inquiries_Count Derogatory_Public_Record_Count Total_Credit Credit_Utilization_Rate Total_Credit_Line_Count Initial_Status pay_36months issued_month issued_year credit_earliest_month credit_earliest_year Region has_delinquency log_Open_Credit_Line_Count
0 11.89 25000 B 0-4 RENT 85000.0 verified debt_consolidation 19.48 0.0 0.0 28854.0 52.10% 42.0 f 0 8 2009 2 1994 West 0 1.000000
1 10.71 7000 B 0-4 RENT 65000.0 not verified credit_card 14.29 0.0 0.0 33623.0 76.70% 7.0 f 0 5 2008 10 2000 Northeast 0 0.845098
2 16.99 25000 D 0-4 RENT 70000.0 verified debt_consolidation 10.50 0.0 0.0 19878.0 66.30% 17.0 f 0 8 2014 6 2000 Northeast 0 1.000000
3 13.11 1200 C 10 OWN 54000.0 not verified debt_consolidation 5.47 0.0 0.0 2584.0 40.40% 31.0 f 0 3 2010 1 1985 South 0 0.698970
4 13.57 10800 C 5-9 RENT 32000.0 not verified debt_consolidation 11.63 1.0 0.0 3511.0 25.60% 40.0 f 0 11 2009 12 1996 Northeast 0 1.146128
In [80]:
sns.distplot(df['log_Open_Credit_Line_Count'])
Out[80]:
<AxesSubplot:xlabel='log_Open_Credit_Line_Count', ylabel='Density'>
In [81]:
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 338974 entries, 0 to 399999
Data columns (total 23 columns):
 #   Column                          Non-Null Count   Dtype   
---  ------                          --------------   -----   
 0   Interest_Rate                   338974 non-null  float64 
 1   Loan_Requested                  338974 non-null  int64   
 2   Loan_Grade                      338974 non-null  category
 3   Years_Employed                  338974 non-null  object  
 4   Home_Ownership                  338974 non-null  category
 5   Annual_Income                   338974 non-null  float64 
 6   Verification                    338974 non-null  object  
 7   loan_Cat                        338974 non-null  object  
 8   Debit_Payment_Ratio             338974 non-null  float64 
 9   Inquiries_Count                 338974 non-null  float64 
 10  Derogatory_Public_Record_Count  338974 non-null  float64 
 11  Total_Credit                    338974 non-null  float64 
 12  Credit_Utilization_Rate         338750 non-null  object  
 13  Total_Credit_Line_Count         338974 non-null  float64 
 14  Initial_Status                  338974 non-null  object  
 15  pay_36months                    338974 non-null  int64   
 16  issued_month                    338974 non-null  int64   
 17  issued_year                     338974 non-null  int64   
 18  credit_earliest_month           338974 non-null  int64   
 19  credit_earliest_year            338974 non-null  int64   
 20  Region                          338974 non-null  category
 21  has_delinquency                 338974 non-null  category
 22  log_Open_Credit_Line_Count      338974 non-null  float64 
dtypes: category(4), float64(8), int64(6), object(5)
memory usage: 53.0+ MB

Process Derogatory_Public_Record_Count¶

In [82]:
df['Derogatory_Public_Record_Count'].value_counts()
Out[82]:
0.0     296216
1.0      37292
2.0       3668
3.0       1076
4.0        346
5.0        186
6.0         89
7.0         47
8.0         19
9.0         11
10.0        10
11.0         3
13.0         2
49.0         1
54.0         1
17.0         1
34.0         1
21.0         1
63.0         1
40.0         1
18.0         1
14.0         1
Name: Derogatory_Public_Record_Count, dtype: int64
In [83]:
df.groupby('Derogatory_Public_Record_Count')[['Interest_Rate']].mean()
Out[83]:
Interest_Rate
Derogatory_Public_Record_Count
0.0 13.810919
1.0 14.775732
2.0 15.631284
3.0 15.564907
4.0 15.963699
5.0 15.638763
6.0 15.097079
7.0 15.042766
8.0 16.267368
9.0 16.111818
10.0 14.169000
11.0 18.830000
13.0 15.455000
14.0 14.990000
17.0 15.610000
18.0 13.980000
21.0 16.240000
34.0 14.980000
40.0 23.430000
49.0 13.670000
54.0 15.310000
63.0 12.990000

Since most of the data of the number of derogatory public records is 0(about 66%), will convert the data to categorical: other than 0 will be 1.

In [84]:
df['has_derogatory'] = df['Derogatory_Public_Record_Count'].apply(lambda x: 1 if x != 0 else 0)
df['has_derogatory']=df['has_derogatory'].astype("category")
df = df.drop(columns = ['Derogatory_Public_Record_Count'])
In [85]:
df['has_derogatory'].value_counts()
Out[85]:
0    296216
1     42758
Name: has_derogatory, dtype: int64

Process Total_Credit¶

In [86]:
df['Total_Credit'].describe()
Out[86]:
count    3.389740e+05
mean     1.596715e+04
std      1.961100e+04
min      0.000000e+00
25%      6.462000e+03
50%      1.178150e+04
75%      2.023300e+04
max      2.568995e+06
Name: Total_Credit, dtype: float64
In [87]:
sns.distplot(df['Total_Credit'])
Out[87]:
<AxesSubplot:xlabel='Total_Credit', ylabel='Density'>
In [88]:
fig = px.box(df, y="Total_Credit")
fig.show()

Since the total credit within the dataset has a lot of huge numbers, will define those numbers as outliers, and remove them if they are greater than 40889.

In [89]:
df = df[df['Total_Credit'] <= 40889]
In [90]:
df.shape
Out[90]:
(323200, 23)

Process Credit_Utilization_Rate¶

In [91]:
df['Credit_Utilization_Rate'] = df['Credit_Utilization_Rate'].str.replace("%","")
#for col in ["Credit_Utilization_Rate"]:
#    df[col] = df[col].str.slice(stop=-1).astype("float")

df['Credit_Utilization_Rate']= pd.to_numeric(df['Credit_Utilization_Rate'])
df['Credit_Utilization_Rate'].describe()
Out[91]:
count    322998.000000
mean         55.811935
std          23.726311
min           0.000000
25%          38.900000
50%          57.200000
75%          74.300000
max         892.300000
Name: Credit_Utilization_Rate, dtype: float64
In [92]:
df['Credit_Utilization_Rate'].isna().sum()
Out[92]:
202

Since there's only 202 missing value in 'Credit_Utilization_Rate', which is less than 0.1% of the data, will fill with mean.

In [93]:
mean_value=df['Credit_Utilization_Rate'].mean()
In [94]:
df.loc['Credit_Utilization_Rate']=df['Credit_Utilization_Rate'].fillna(value=mean_value, inplace=True)
In [95]:
df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 323201 entries, 0 to Credit_Utilization_Rate
Data columns (total 23 columns):
 #   Column                      Non-Null Count   Dtype  
---  ------                      --------------   -----  
 0   Interest_Rate               323200 non-null  float64
 1   Loan_Requested              323200 non-null  float64
 2   Loan_Grade                  323200 non-null  object 
 3   Years_Employed              323200 non-null  object 
 4   Home_Ownership              323200 non-null  object 
 5   Annual_Income               323200 non-null  float64
 6   Verification                323200 non-null  object 
 7   loan_Cat                    323200 non-null  object 
 8   Debit_Payment_Ratio         323200 non-null  float64
 9   Inquiries_Count             323200 non-null  float64
 10  Total_Credit                323200 non-null  float64
 11  Credit_Utilization_Rate     323200 non-null  float64
 12  Total_Credit_Line_Count     323200 non-null  float64
 13  Initial_Status              323200 non-null  object 
 14  pay_36months                323200 non-null  float64
 15  issued_month                323200 non-null  float64
 16  issued_year                 323200 non-null  float64
 17  credit_earliest_month       323200 non-null  float64
 18  credit_earliest_year        323200 non-null  float64
 19  Region                      323200 non-null  object 
 20  has_delinquency             323200 non-null  float64
 21  log_Open_Credit_Line_Count  323200 non-null  float64
 22  has_derogatory              323200 non-null  float64
dtypes: float64(16), object(7)
memory usage: 59.2+ MB

Process Total_Credit_Line_Count¶

In [96]:
df['Total_Credit_Line_Count'].describe()
Out[96]:
count    323200.000000
mean         24.633846
std          11.356222
min           2.000000
25%          16.000000
50%          23.000000
75%          31.000000
max         118.000000
Name: Total_Credit_Line_Count, dtype: float64
In [97]:
sns.distplot(df['Total_Credit_Line_Count'])
Out[97]:
<AxesSubplot:xlabel='Total_Credit_Line_Count', ylabel='Density'>
In [98]:
fig = px.box(df, y="Total_Credit_Line_Count")
fig.show()
In [99]:
df = df[df['Total_Credit_Line_Count'] <= 53]
df.shape
Out[99]:
(317178, 23)

Initial status¶

In [100]:
df['Initial_Status'].value_counts()
Out[100]:
f    218272
w     98906
Name: Initial_Status, dtype: int64
In [101]:
df.groupby('Initial_Status')[['Initial_Status','Interest_Rate']].mean()
#plot
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Initial_Status'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
Out[101]:
<seaborn.axisgrid.PairGrid at 0x7f7c92c1e640>
In [102]:
df['Initial_Status']=df['Initial_Status'].astype("category")
In [103]:
df.isna().sum()
Out[103]:
Interest_Rate                 0
Loan_Requested                0
Loan_Grade                    0
Years_Employed                0
Home_Ownership                0
Annual_Income                 0
Verification                  0
loan_Cat                      0
Debit_Payment_Ratio           0
Inquiries_Count               0
Total_Credit                  0
Credit_Utilization_Rate       0
Total_Credit_Line_Count       0
Initial_Status                0
pay_36months                  0
issued_month                  0
issued_year                   0
credit_earliest_month         0
credit_earliest_year          0
Region                        0
has_delinquency               0
log_Open_Credit_Line_Count    0
has_derogatory                0
dtype: int64

1.3 One-hot encoding¶

In [104]:
#get dummies variables
df = pd.get_dummies(df, drop_first=True)
df.head()
Out[104]:
Interest_Rate Loan_Requested Annual_Income Debit_Payment_Ratio Inquiries_Count Total_Credit Credit_Utilization_Rate Total_Credit_Line_Count pay_36months issued_month issued_year credit_earliest_month credit_earliest_year has_delinquency log_Open_Credit_Line_Count has_derogatory Loan_Grade_B Loan_Grade_C Loan_Grade_D Loan_Grade_E Loan_Grade_F Loan_Grade_G Loan_Grade_Others Years_Employed_10 Years_Employed_5-9 Home_Ownership_OTHER Home_Ownership_OWN Home_Ownership_RENT Verification_verified loan_Cat_credit_card loan_Cat_debt_consolidation loan_Cat_educational loan_Cat_home_improvement loan_Cat_house loan_Cat_major_purchase loan_Cat_medical loan_Cat_moving loan_Cat_other loan_Cat_renewable_energy loan_Cat_small_business loan_Cat_vacation loan_Cat_wedding Initial_Status_w Region_Northeast Region_Other Region_South Region_West
0 11.89 25000.0 85000.0 19.48 0.0 28854.0 52.1 42.0 0.0 8.0 2009.0 2.0 1994.0 0.0 1.000000 0.0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 10.71 7000.0 65000.0 14.29 0.0 33623.0 76.7 7.0 0.0 5.0 2008.0 10.0 2000.0 0.0 0.845098 0.0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
2 16.99 25000.0 70000.0 10.50 0.0 19878.0 66.3 17.0 0.0 8.0 2014.0 6.0 2000.0 0.0 1.000000 0.0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
3 13.11 1200.0 54000.0 5.47 0.0 2584.0 40.4 31.0 0.0 3.0 2010.0 1.0 1985.0 0.0 0.698970 0.0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
4 13.57 10800.0 32000.0 11.63 1.0 3511.0 25.6 40.0 0.0 11.0 2009.0 12.0 1996.0 0.0 1.146128 0.0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
In [105]:
df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 317178 entries, 0 to 399999
Data columns (total 47 columns):
 #   Column                       Non-Null Count   Dtype  
---  ------                       --------------   -----  
 0   Interest_Rate                317178 non-null  float64
 1   Loan_Requested               317178 non-null  float64
 2   Annual_Income                317178 non-null  float64
 3   Debit_Payment_Ratio          317178 non-null  float64
 4   Inquiries_Count              317178 non-null  float64
 5   Total_Credit                 317178 non-null  float64
 6   Credit_Utilization_Rate      317178 non-null  float64
 7   Total_Credit_Line_Count      317178 non-null  float64
 8   pay_36months                 317178 non-null  float64
 9   issued_month                 317178 non-null  float64
 10  issued_year                  317178 non-null  float64
 11  credit_earliest_month        317178 non-null  float64
 12  credit_earliest_year         317178 non-null  float64
 13  has_delinquency              317178 non-null  float64
 14  log_Open_Credit_Line_Count   317178 non-null  float64
 15  has_derogatory               317178 non-null  float64
 16  Loan_Grade_B                 317178 non-null  uint8  
 17  Loan_Grade_C                 317178 non-null  uint8  
 18  Loan_Grade_D                 317178 non-null  uint8  
 19  Loan_Grade_E                 317178 non-null  uint8  
 20  Loan_Grade_F                 317178 non-null  uint8  
 21  Loan_Grade_G                 317178 non-null  uint8  
 22  Loan_Grade_Others            317178 non-null  uint8  
 23  Years_Employed_10            317178 non-null  uint8  
 24  Years_Employed_5-9           317178 non-null  uint8  
 25  Home_Ownership_OTHER         317178 non-null  uint8  
 26  Home_Ownership_OWN           317178 non-null  uint8  
 27  Home_Ownership_RENT          317178 non-null  uint8  
 28  Verification_verified        317178 non-null  uint8  
 29  loan_Cat_credit_card         317178 non-null  uint8  
 30  loan_Cat_debt_consolidation  317178 non-null  uint8  
 31  loan_Cat_educational         317178 non-null  uint8  
 32  loan_Cat_home_improvement    317178 non-null  uint8  
 33  loan_Cat_house               317178 non-null  uint8  
 34  loan_Cat_major_purchase      317178 non-null  uint8  
 35  loan_Cat_medical             317178 non-null  uint8  
 36  loan_Cat_moving              317178 non-null  uint8  
 37  loan_Cat_other               317178 non-null  uint8  
 38  loan_Cat_renewable_energy    317178 non-null  uint8  
 39  loan_Cat_small_business      317178 non-null  uint8  
 40  loan_Cat_vacation            317178 non-null  uint8  
 41  loan_Cat_wedding             317178 non-null  uint8  
 42  Initial_Status_w             317178 non-null  uint8  
 43  Region_Northeast             317178 non-null  uint8  
 44  Region_Other                 317178 non-null  uint8  
 45  Region_South                 317178 non-null  uint8  
 46  Region_West                  317178 non-null  uint8  
dtypes: float64(16), uint8(31)
memory usage: 58.6+ MB

2. Train/Test data split¶

In [106]:
X, y = df.drop("Interest_Rate", axis=1), df["Interest_Rate"]
In [107]:
(x_train, x_test, y_train, y_test) = train_test_split( X, y, test_size=0.2, random_state=1)

3. Data modeling¶

In [108]:
# Import DecisionTreeRegressor from sklearn.tree
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor

from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_squared_error as MSE

3.1 linear Regression¶

In [109]:
lr = LinearRegression()
# Fit 'linear' to the training set
lr.fit(x_train, y_train)

# Predict the test set labels 'y_pred'
lr_y_pred_test = lr.predict(x_test)
lr_y_pred_train = lr.predict(x_train)

lr_MSE_CV_scores = -cross_val_score(
    lr, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)
# Evaluate the test set RMSE
lr_rmse_train = MSE(y_train, lr_y_pred_train) ** (1 / 2)
lr_rmse_test = MSE(y_test, lr_y_pred_test) ** (1 / 2)
lr_RMSE_CV = (lr_MSE_CV_scores.mean()) ** (1 / 2)

# Print the test set RMSE
print("Train set RMSE of rf: {:.2f}".format(lr_rmse_train))
print("Test set RMSE of rf: {:.2f}".format(lr_rmse_test))
print("CV RMSE: {:.2f}".format(lr_RMSE_CV))
Train set RMSE of rf: 1.93
Test set RMSE of rf: 1.95
CV RMSE: 1.94
In [110]:
lr.score(x_train, y_train)
Out[110]:
0.8029651645841578
In [111]:
lr.score(x_test, y_test)
Out[111]:
0.8005115397963668
In [112]:
#feature importance
importances = pd.DataFrame(
    lr.coef_, columns=["Coefficients"], index=x_train.columns)
importances = importances.sort_values(by='Coefficients', ascending=False)[:10]

importances.plot(kind="barh", figsize=(9, 7))
plt.title("Ridge model")
plt.axvline(x=0, color=".5")
plt.subplots_adjust(left=0.3)

3.2 Random forest¶

In [113]:
# Instantiate a random forests regressor 'rf' 400 estimators
rf = RandomForestRegressor(n_estimators=400, min_samples_leaf=0.1)
# Fit 'rf' to the training set
rf.fit(x_train, y_train)

# Predict the test set labels 'y_pred'
rf_y_pred_test = rf.predict(x_test)
rf_y_pred_train = rf.predict(x_train)
rf_MSE_CV_scores = -cross_val_score(
    rf, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)
# Evaluate the test set RMSE
rf_rmse_test = MSE(y_test, rf_y_pred_test) ** (1 / 2)
rf_rmse_train = MSE(y_train, rf_y_pred_train) ** (1 / 2)
rf_RMSE_CV = (rf_MSE_CV_scores.mean()) ** (1 / 2)

# Print the test set RMSE
print("Train set RMSE of rf: {:.2f}".format(rf_rmse_train))
print("Test set RMSE of rf: {:.2f}".format(rf_rmse_test))
print("CV RMSE: {:.2f}".format(rf_RMSE_CV))
Train set RMSE of rf: 3.85
Test set RMSE of rf: 3.85
CV RMSE: 3.85
In [114]:
rf.score(x_train, y_train)
Out[114]:
0.21887540205491063
In [115]:
rf.score(x_test, y_test)
Out[115]:
0.22096955023741294
In [116]:
importances_rf = pd.Series(rf.feature_importances_, index=X.columns)
# Sort importances_rf
sorted_importances_rf = importances_rf.sort_values(ascending=False).head()
# Make a horizontal bar plot
sorted_importances_rf.plot(kind="barh", color="blue")
plt.show()

3.3 Decision tree¶

In [117]:
dt = DecisionTreeRegressor(max_depth=15, min_samples_leaf=0.1, random_state=6)
# Fit dt to the training set
dt.fit(x_train, y_train)


# Predict the labels of the training set
dt_y_pred_train = dt.predict(x_train)
dt_y_pred_test = dt.predict(x_test)
dt_MSE_CV_scores = -cross_val_score(
    dt, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)

# Evaluate the training set RMSE of dt
dt_RMSE_train = (MSE(y_train, dt_y_pred_train)) ** (1 / 2)
dt_RMSE_test = (MSE(y_test, dt_y_pred_test)) ** (1 / 2)
dt_RMSE_CV = (dt_MSE_CV_scores.mean()) ** (1 / 2)

# Print RMSE score
print("Train RMSE: {:.2f}".format(dt_RMSE_train))
print("Test RMSE of dt: {:.2f}".format(dt_RMSE_test))
print("CV RMSE: {:.2f}".format(dt_RMSE_CV))
Train RMSE: 3.64
Test RMSE of dt: 3.64
CV RMSE: 3.64
In [118]:
dt.score(x_train, y_train)
Out[118]:
0.3008469440519915
In [119]:
dt.score(x_test, y_test)
Out[119]:
0.30341919246493654

3.3.1 Decision tree parameter tuning: max_depth=40, min_samples_leaf=0.05¶

In [120]:
dt1 = DecisionTreeRegressor(max_depth=40, min_samples_leaf=0.05, random_state=6)
# Fit dt to the training set
dt1.fit(x_train, y_train)

# Predict the labels 
dt1_y_pred_train = dt1.predict(x_train)
dt1_y_pred_test = dt1.predict(x_test)
# Compute the array containing the 10-folds CV MSEs
dt1_MSE_CV_scores = -cross_val_score(
    dt1, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)

# Evaluate the training set RMSE of dt
dt1_RMSE_train = (MSE(y_train, dt1_y_pred_train)) ** (1 / 2)
dt1_RMSE_test = (MSE(y_test, dt1_y_pred_test)) ** (1 / 2)
dt1_RMSE_CV = (dt1_MSE_CV_scores.mean()) ** (1 / 2)

# Print RMSE_train
print("Train RMSE: {:.2f}".format(dt1_RMSE_train))
print("Test RMSE of dt: {:.2f}".format(dt1_RMSE_test))
print("CV RMSE: {:.2f}".format(dt1_RMSE_CV))
Train RMSE: 2.98
Test RMSE of dt: 2.96
CV RMSE: 2.98
In [121]:
dt1.score(x_train, y_train)
Out[121]:
0.5335649314897272
In [122]:
dt1.score(x_test, y_test)
Out[122]:
0.539498205910132

3.4 GradientBoostingRegressor¶

In [123]:
gb = GradientBoostingRegressor(max_depth=10, n_estimators=200, random_state=2)
# Fit gb to the training set
gb.fit(x_train, y_train)

# Predict labels
gb_y_pred_train = gb.predict(x_train)
gb_y_pred_test = gb.predict(x_test)
# Compute the array containing the 10-folds CV MSEs
gb_MSE_CV_scores = -cross_val_score(
    dt1, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)


# Evaluate the RMSE of gb
gb_RMSE_train = (MSE(y_train, gb_y_pred_train)) ** (1 / 2)
gb_RMSE_test = (MSE(y_test, gb_y_pred_test)) ** (1 / 2)
# Compute the 10-folds CV RMSE
gb_RMSE_CV = (gb_MSE_CV_scores.mean()) ** (1 / 2)

# Print RMSE score
print("Train RMSE: {:.2f}".format(gb_RMSE_train))
print("Test RMSE of dt: {:.2f}".format(gb_RMSE_test))
print("CV RMSE: {:.2f}".format(gb_RMSE_CV))
Train RMSE: 1.09
Test RMSE of dt: 1.51
CV RMSE: 2.98
In [124]:
gb.score(x_train, y_train)
Out[124]:
0.9369237979514815
In [125]:
gb.score(x_test, y_test)
Out[125]:
0.8805048689825804

Apply to test data¶

apply all methods use in train data, to test data¶

In [126]:
test = pd.read_csv('Holdout for Testing.csv')
#rename column name
test.columns = ['Interest_Rate', 'loanID', 'borID', 'Loan_Requested', 'Loan_Funded', 'Investor_portion', \
                'Number_of_Payments', 'Loan_Grade','loanSGrade','job', 'Years_Employed', 'Home_Ownership',\
                'Annual_Income', 'Verification', 'Issued_MonYY','reason_Loan', 'loan_Cat','loanTitle', 'zip_3',\
                'State', 'Debit_Payment_Ratio', 'Delinquency_Frequency','Credit_Earliest_MonYY','Inquiries_Count',\
                'Delinquency_Recency', 'Public_Record_Recency','Open_Credit_Line_Count', 'Derogatory_Public_Record_Count',\
                'Total_Credit','Credit_Utilization_Rate','Total_Credit_Line_Count','Initial_Status']

test.head(5)
Out[126]:
Interest_Rate loanID borID Loan_Requested Loan_Funded Investor_portion Number_of_Payments Loan_Grade loanSGrade job Years_Employed Home_Ownership Annual_Income Verification Issued_MonYY reason_Loan loan_Cat loanTitle zip_3 State Debit_Payment_Ratio Delinquency_Frequency Credit_Earliest_MonYY Inquiries_Count Delinquency_Recency Public_Record_Recency Open_Credit_Line_Count Derogatory_Public_Record_Count Total_Credit Credit_Utilization_Rate Total_Credit_Line_Count Initial_Status
0 NaN 44409194 47416907 $6,000 $6,000 $6,000 36 months C C5 Electrician 10+ years MORTGAGE 68000.0 VERIFIED - income 15-Mar NaN debt_consolidation Debt consolidation 430xx OH 28.31 0 2-Nov 1 26.0 NaN 18 0 19861 64.50% 33 f
1 NaN 44017917 47034722 $24,000 $24,000 $24,000 36 months A A1 Executive Assistant 8 years RENT 110480.0 VERIFIED - income 15-Mar NaN debt_consolidation Debt consolidation 945xx CA 16.03 0 Dec-68 1 NaN NaN 12 0 17001 26.20% 36 w
2 NaN 44259158 47306871 $35,000 $35,000 $35,000 36 months C C2 District Sales Leader 10+ years MORTGAGE 86000.0 VERIFIED - income 15-Mar NaN debt_consolidation Debt consolidation 195xx PA 32.49 0 Oct-98 0 NaN NaN 16 0 25797 49.90% 33 w
3 NaN 44429213 47476932 $10,000 $10,000 $10,000 60 months D D1 pharmacy associate 10+ years RENT 30000.0 VERIFIED - income source 15-Mar NaN debt_consolidation Debt consolidation 921xx CA 32.96 0 Feb-99 1 NaN 114.0 13 1 9586 43.80% 21 w
4 NaN 44299188 47346901 $24,000 $24,000 $24,000 60 months B B1 Medical case manager 10+ years MORTGAGE 82500.0 VERIFIED - income 15-Mar NaN debt_consolidation Debt consolidation 196xx PA 31.03 0 2-Dec 0 48.0 NaN 27 0 31842 41.30% 43 w
In [127]:
#drop interest_rate in the test data
test = test.drop("Interest_Rate", axis=1)
In [128]:
test.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 80000 entries, 0 to 79999
Data columns (total 31 columns):
 #   Column                          Non-Null Count  Dtype  
---  ------                          --------------  -----  
 0   loanID                          80000 non-null  int64  
 1   borID                           80000 non-null  int64  
 2   Loan_Requested                  80000 non-null  object 
 3   Loan_Funded                     80000 non-null  object 
 4   Investor_portion                80000 non-null  object 
 5   Number_of_Payments              80000 non-null  object 
 6   Loan_Grade                      80000 non-null  object 
 7   loanSGrade                      80000 non-null  object 
 8   job                             75606 non-null  object 
 9   Years_Employed                  75618 non-null  object 
 10  Home_Ownership                  80000 non-null  object 
 11  Annual_Income                   80000 non-null  float64
 12  Verification                    80000 non-null  object 
 13  Issued_MonYY                    80000 non-null  object 
 14  reason_Loan                     15 non-null     object 
 15  loan_Cat                        80000 non-null  object 
 16  loanTitle                       80000 non-null  object 
 17  zip_3                           80000 non-null  object 
 18  State                           80000 non-null  object 
 19  Debit_Payment_Ratio             80000 non-null  float64
 20  Delinquency_Frequency           80000 non-null  int64  
 21  Credit_Earliest_MonYY           80000 non-null  object 
 22  Inquiries_Count                 80000 non-null  int64  
 23  Delinquency_Recency             41296 non-null  float64
 24  Public_Record_Recency           13839 non-null  float64
 25  Open_Credit_Line_Count          80000 non-null  int64  
 26  Derogatory_Public_Record_Count  80000 non-null  int64  
 27  Total_Credit                    80000 non-null  int64  
 28  Credit_Utilization_Rate         79970 non-null  object 
 29  Total_Credit_Line_Count         80000 non-null  int64  
 30  Initial_Status                  80000 non-null  object 
dtypes: float64(4), int64(8), object(19)
memory usage: 18.9+ MB
In [129]:
# drop variables that are not predictive to target variable
test=test.drop(columns = ['reason_Loan', 'loanTitle','Delinquency_Recency', 'Public_Record_Recency'])
test=test.drop(columns = ['loanID', 'borID','loanSGrade','zip_3'])
test=test.drop(columns = ['job'])
In [130]:
#Loan_Requested, Loan_Funded,Investor_portion
test.Loan_Requested = test.Loan_Requested.replace('[\$\,]','', regex = True).astype(int)
test.Loan_Funded = test.Loan_Funded.replace('[\$\,]','', regex = True).astype(int)
test.Investor_portion = test.Investor_portion.replace('[\$\,]','', regex = True).astype(int)

test=test.drop(['Loan_Funded','Investor_portion'],axis=1)
In [131]:
# Number_of_Payments
test['pay_36months'] = test['Number_of_Payments'].apply(lambda x: 1 if x == '36 months' else 0)
test = test.drop('Number_of_Payments', axis=1)
In [132]:
#loan grade
test["Loan_Grade"] = test["Loan_Grade"].fillna('Others').astype("category")
In [133]:
#Years_Employed
test['Years_Employed']= test['Years_Employed'].str.replace('years','').str.replace('year','').str.replace('+','')
test['Years_Employed']= test['Years_Employed'].str.replace('< 1','0')
test['Years_Employed']= test['Years_Employed'].astype('float')

test['Years_Employed']=test['Years_Employed'].interpolate()
new=['0-4','5-9','10']
test['Years_Employed']= [new[int(x)//5] if x!='Other' else 'Other' for x in test['Years_Employed']]
In [134]:
#Home_Ownership
test['Home_Ownership']=test['Home_Ownership'].str.replace('NONE','OTHER').str.replace('ANY','OTHER')
test['Home_Ownership']=test['Home_Ownership'].fillna("OTHER")
test['Home_Ownership'] = test['Home_Ownership'].astype("category")
In [135]:
#Verification
test["Verification"] = test["Verification"].str.replace("VERIFIED - income", "verified").str.replace("verified source","verified")
test['Verification'] = test['Verification'].astype("category")

Found that the pattern for this test data is different from the original data

In [136]:
test = test.sort_values("Credit_Earliest_MonYY").reset_index()
test["Credit_Earliest_MonYY"][30000:35000]
Out[136]:
30000     7-Jan
30001     7-Jan
30002     7-Jan
30003     7-Jan
30004     7-Jan
30005     7-Jan
30006     7-Jan
30007     7-Jan
30008     7-Jan
30009     7-Jan
30010     7-Jan
30011     7-Jan
30012     7-Jan
30013     7-Jan
30014     7-Jan
30015     7-Jan
30016     7-Jan
30017     7-Jan
30018     7-Jan
30019     7-Jan
30020     7-Jan
30021     7-Jan
30022     7-Jan
30023     7-Jan
30024     7-Jan
30025     7-Jan
30026     7-Jan
30027     7-Jan
30028     7-Jan
30029     7-Jan
30030     7-Jan
30031     7-Jan
30032     7-Jan
30033     7-Jan
30034     7-Jan
30035     7-Jan
30036     7-Jan
30037     7-Jan
30038     7-Jan
30039     7-Jan
30040     7-Jan
30041     7-Jan
30042     7-Jan
30043     7-Jan
30044     7-Jan
30045     7-Jan
30046     7-Jan
30047     7-Jan
30048     7-Jan
30049     7-Jan
30050     7-Jan
30051     7-Jan
30052     7-Jan
30053     7-Jan
30054     7-Jan
30055     7-Jan
30056     7-Jan
30057     7-Jan
30058     7-Jan
30059     7-Jan
30060     7-Jan
30061     7-Jan
30062     7-Jan
30063     7-Jul
30064     7-Jul
30065     7-Jul
30066     7-Jul
30067     7-Jul
30068     7-Jul
30069     7-Jul
30070     7-Jul
30071     7-Jul
30072     7-Jul
30073     7-Jul
30074     7-Jul
30075     7-Jul
30076     7-Jul
30077     7-Jul
30078     7-Jul
30079     7-Jul
30080     7-Jul
30081     7-Jul
30082     7-Jul
30083     7-Jul
30084     7-Jul
30085     7-Jul
30086     7-Jul
30087     7-Jul
30088     7-Jul
30089     7-Jul
30090     7-Jul
30091     7-Jul
30092     7-Jul
30093     7-Jul
30094     7-Jul
30095     7-Jul
30096     7-Jul
30097     7-Jul
30098     7-Jul
30099     7-Jul
30100     7-Jul
30101     7-Jul
30102     7-Jul
30103     7-Jul
30104     7-Jul
30105     7-Jul
30106     7-Jul
30107     7-Jul
30108     7-Jul
30109     7-Jul
30110     7-Jul
30111     7-Jul
30112     7-Jul
30113     7-Jul
30114     7-Jul
30115     7-Jul
30116     7-Jul
30117     7-Jul
30118     7-Jul
30119     7-Jul
30120     7-Jul
30121     7-Jul
30122     7-Jul
30123     7-Jul
30124     7-Jul
30125     7-Jul
30126     7-Jul
30127     7-Jul
30128     7-Jul
30129     7-Jul
30130     7-Jul
30131     7-Jul
30132     7-Jul
30133     7-Jul
30134     7-Jul
30135     7-Jul
30136     7-Jul
30137     7-Jul
30138     7-Jul
30139     7-Jul
30140     7-Jul
30141     7-Jul
30142     7-Jul
30143     7-Jul
30144     7-Jul
30145     7-Jul
30146     7-Jul
30147     7-Jul
30148     7-Jul
30149     7-Jul
30150     7-Jul
30151     7-Jul
30152     7-Jul
30153     7-Jul
30154     7-Jul
30155     7-Jul
30156     7-Jul
30157     7-Jul
30158     7-Jul
30159     7-Jul
30160     7-Jul
30161     7-Jul
30162     7-Jul
30163     7-Jul
30164     7-Jul
30165     7-Jul
30166     7-Jul
30167     7-Jul
30168     7-Jul
30169     7-Jul
30170     7-Jul
30171     7-Jul
30172     7-Jul
30173     7-Jul
30174     7-Jul
30175     7-Jul
30176     7-Jul
30177     7-Jul
30178     7-Jul
30179     7-Jul
30180     7-Jul
30181     7-Jul
30182     7-Jul
30183     7-Jul
30184     7-Jul
30185     7-Jul
30186     7-Jul
30187     7-Jul
30188     7-Jul
30189     7-Jul
30190     7-Jul
30191     7-Jul
30192     7-Jul
30193     7-Jul
30194     7-Jul
30195     7-Jul
30196     7-Jul
30197     7-Jul
30198     7-Jul
30199     7-Jul
30200     7-Jul
30201     7-Jul
30202     7-Jul
30203     7-Jul
30204     7-Jul
30205     7-Jul
30206     7-Jul
30207     7-Jul
30208     7-Jul
30209     7-Jul
30210     7-Jul
30211     7-Jul
30212     7-Jul
30213     7-Jul
30214     7-Jul
30215     7-Jul
30216     7-Jul
30217     7-Jul
30218     7-Jul
30219     7-Jul
30220     7-Jul
30221     7-Jul
30222     7-Jul
30223     7-Jul
30224     7-Jul
30225     7-Jul
30226     7-Jul
30227     7-Jul
30228     7-Jul
30229     7-Jul
30230     7-Jul
30231     7-Jul
30232     7-Jul
30233     7-Jul
30234     7-Jul
30235     7-Jul
30236     7-Jul
30237     7-Jul
30238     7-Jul
30239     7-Jul
30240     7-Jul
30241     7-Jul
30242     7-Jul
30243     7-Jul
30244     7-Jul
30245     7-Jul
30246     7-Jul
30247     7-Jul
30248     7-Jul
30249     7-Jul
30250     7-Jul
30251     7-Jul
30252     7-Jul
30253     7-Jul
30254     7-Jul
30255     7-Jul
30256     7-Jul
30257     7-Jul
30258     7-Jul
30259     7-Jul
30260     7-Jul
30261     7-Jul
30262     7-Jul
30263     7-Jul
30264     7-Jul
30265     7-Jul
30266     7-Jul
30267     7-Jul
30268     7-Jul
30269     7-Jul
30270     7-Jul
30271     7-Jun
30272     7-Jun
30273     7-Jun
30274     7-Jun
30275     7-Jun
30276     7-Jun
30277     7-Jun
30278     7-Jun
30279     7-Jun
30280     7-Jun
30281     7-Jun
30282     7-Jun
30283     7-Jun
30284     7-Jun
30285     7-Jun
30286     7-Jun
30287     7-Jun
30288     7-Jun
30289     7-Jun
30290     7-Jun
30291     7-Jun
30292     7-Jun
30293     7-Jun
30294     7-Jun
30295     7-Jun
30296     7-Jun
30297     7-Jun
30298     7-Jun
30299     7-Jun
30300     7-Jun
30301     7-Jun
30302     7-Jun
30303     7-Jun
30304     7-Jun
30305     7-Jun
30306     7-Jun
30307     7-Jun
30308     7-Jun
30309     7-Jun
30310     7-Jun
30311     7-Jun
30312     7-Jun
30313     7-Jun
30314     7-Jun
30315     7-Jun
30316     7-Jun
30317     7-Jun
30318     7-Jun
30319     7-Jun
30320     7-Jun
30321     7-Jun
30322     7-Jun
30323     7-Jun
30324     7-Jun
30325     7-Jun
30326     7-Jun
30327     7-Jun
30328     7-Jun
30329     7-Jun
30330     7-Jun
30331     7-Jun
30332     7-Jun
30333     7-Jun
30334     7-Jun
30335     7-Jun
30336     7-Jun
30337     7-Jun
30338     7-Jun
30339     7-Jun
30340     7-Jun
30341     7-Jun
30342     7-Jun
30343     7-Jun
30344     7-Jun
30345     7-Jun
30346     7-Jun
30347     7-Jun
30348     7-Jun
30349     7-Jun
30350     7-Jun
30351     7-Jun
30352     7-Jun
30353     7-Jun
30354     7-Jun
30355     7-Jun
30356     7-Jun
30357     7-Jun
30358     7-Jun
30359     7-Jun
30360     7-Jun
30361     7-Jun
30362     7-Jun
30363     7-Jun
30364     7-Jun
30365     7-Jun
30366     7-Jun
30367     7-Jun
30368     7-Jun
30369     7-Jun
30370     7-Jun
30371     7-Jun
30372     7-Jun
30373     7-Jun
30374     7-Jun
30375     7-Jun
30376     7-Jun
30377     7-Jun
30378     7-Jun
30379     7-Jun
30380     7-Jun
30381     7-Jun
30382     7-Jun
30383     7-Jun
30384     7-Jun
30385     7-Jun
30386     7-Jun
30387     7-Jun
30388     7-Jun
30389     7-Jun
30390     7-Jun
30391     7-Jun
30392     7-Jun
30393     7-Jun
30394     7-Jun
30395     7-Jun
30396     7-Jun
30397     7-Jun
30398     7-Jun
30399     7-Jun
30400     7-Jun
30401     7-Jun
30402     7-Jun
30403     7-Jun
30404     7-Jun
30405     7-Jun
30406     7-Jun
30407     7-Jun
30408     7-Jun
30409     7-Jun
30410     7-Jun
30411     7-Jun
30412     7-Jun
30413     7-Jun
30414     7-Jun
30415     7-Jun
30416     7-Jun
30417     7-Jun
30418     7-Jun
30419     7-Jun
30420     7-Jun
30421     7-Jun
30422     7-Jun
30423     7-Jun
30424     7-Jun
30425     7-Jun
30426     7-Jun
30427     7-Jun
30428     7-Jun
30429     7-Jun
30430     7-Jun
30431     7-Jun
30432     7-Jun
30433     7-Jun
30434     7-Jun
30435     7-Jun
30436     7-Jun
30437     7-Jun
30438     7-Jun
30439     7-Jun
30440     7-Jun
30441     7-Jun
30442     7-Jun
30443     7-Jun
30444     7-Jun
30445     7-Jun
30446     7-Jun
30447     7-Jun
30448     7-Jun
30449     7-Jun
30450     7-Jun
30451     7-Jun
30452     7-Jun
30453     7-Jun
30454     7-Jun
30455     7-Jun
30456     7-Jun
30457     7-Jun
30458     7-Jun
30459     7-Jun
30460     7-Jun
30461     7-Jun
30462     7-Jun
30463     7-Jun
30464     7-Jun
30465     7-Jun
30466     7-Jun
30467     7-Jun
30468     7-Jun
30469     7-Jun
30470     7-Jun
30471     7-Jun
30472     7-Jun
30473     7-Mar
30474     7-Mar
30475     7-Mar
30476     7-Mar
30477     7-Mar
30478     7-Mar
30479     7-Mar
30480     7-Mar
30481     7-Mar
30482     7-Mar
30483     7-Mar
30484     7-Mar
30485     7-Mar
30486     7-Mar
30487     7-Mar
30488     7-Mar
30489     7-Mar
30490     7-Mar
30491     7-Mar
30492     7-Mar
30493     7-Mar
30494     7-Mar
30495     7-Mar
30496     7-Mar
30497     7-Mar
30498     7-Mar
30499     7-Mar
30500     7-Mar
30501     7-Mar
30502     7-Mar
30503     7-Mar
30504     7-Mar
30505     7-Mar
30506     7-Mar
30507     7-Mar
30508     7-Mar
30509     7-Mar
30510     7-Mar
30511     7-Mar
30512     7-Mar
30513     7-Mar
30514     7-Mar
30515     7-Mar
30516     7-Mar
30517     7-Mar
30518     7-Mar
30519     7-Mar
30520     7-Mar
30521     7-Mar
30522     7-Mar
30523     7-Mar
30524     7-Mar
30525     7-Mar
30526     7-Mar
30527     7-Mar
30528     7-Mar
30529     7-Mar
30530     7-Mar
30531     7-Mar
30532     7-Mar
30533     7-Mar
30534     7-Mar
30535     7-Mar
30536     7-Mar
30537     7-Mar
30538     7-Mar
30539     7-Mar
30540     7-Mar
30541     7-Mar
30542     7-Mar
30543     7-Mar
30544     7-Mar
30545     7-Mar
30546     7-Mar
30547     7-Mar
30548     7-Mar
30549     7-Mar
30550     7-Mar
30551     7-Mar
30552     7-Mar
30553     7-Mar
30554     7-Mar
30555     7-Mar
30556     7-Mar
30557     7-Mar
30558     7-Mar
30559     7-Mar
30560     7-Mar
30561     7-Mar
30562     7-Mar
30563     7-Mar
30564     7-Mar
30565     7-Mar
30566     7-Mar
30567     7-Mar
30568     7-Mar
30569     7-Mar
30570     7-Mar
30571     7-Mar
30572     7-Mar
30573     7-Mar
30574     7-Mar
30575     7-Mar
30576     7-Mar
30577     7-Mar
30578     7-Mar
30579     7-Mar
30580     7-Mar
30581     7-Mar
30582     7-Mar
30583     7-Mar
30584     7-Mar
30585     7-Mar
30586     7-Mar
30587     7-Mar
30588     7-Mar
30589     7-Mar
30590     7-Mar
30591     7-Mar
30592     7-Mar
30593     7-Mar
30594     7-Mar
30595     7-Mar
30596     7-Mar
30597     7-Mar
30598     7-Mar
30599     7-Mar
30600     7-Mar
30601     7-Mar
30602     7-Mar
30603     7-Mar
30604     7-Mar
30605     7-Mar
30606     7-Mar
30607     7-Mar
30608     7-Mar
30609     7-Mar
30610     7-Mar
30611     7-Mar
30612     7-Mar
30613     7-Mar
30614     7-Mar
30615     7-Mar
30616     7-Mar
30617     7-Mar
30618     7-Mar
30619     7-Mar
30620     7-Mar
30621     7-Mar
30622     7-Mar
30623     7-Mar
30624     7-Mar
30625     7-Mar
30626     7-Mar
30627     7-Mar
30628     7-Mar
30629     7-Mar
30630     7-Mar
30631     7-Mar
30632     7-Mar
30633     7-Mar
30634     7-Mar
30635     7-Mar
30636     7-Mar
30637     7-Mar
30638     7-Mar
30639     7-Mar
30640     7-Mar
30641     7-Mar
30642     7-Mar
30643     7-Mar
30644     7-Mar
30645     7-Mar
30646     7-Mar
30647     7-Mar
30648     7-Mar
30649     7-Mar
30650     7-Mar
30651     7-Mar
30652     7-Mar
30653     7-Mar
30654     7-Mar
30655     7-Mar
30656     7-Mar
30657     7-Mar
30658     7-Mar
30659     7-Mar
30660     7-Mar
30661     7-Mar
30662     7-Mar
30663     7-Mar
30664     7-Mar
30665     7-Mar
30666     7-Mar
30667     7-Mar
30668     7-Mar
30669     7-Mar
30670     7-Mar
30671     7-Mar
30672     7-Mar
30673     7-Mar
30674     7-Mar
30675     7-Mar
30676     7-May
30677     7-May
30678     7-May
30679     7-May
30680     7-May
30681     7-May
30682     7-May
30683     7-May
30684     7-May
30685     7-May
30686     7-May
30687     7-May
30688     7-May
30689     7-May
30690     7-May
30691     7-May
30692     7-May
30693     7-May
30694     7-May
30695     7-May
30696     7-May
30697     7-May
30698     7-May
30699     7-May
30700     7-May
30701     7-May
30702     7-May
30703     7-May
30704     7-May
30705     7-May
30706     7-May
30707     7-May
30708     7-May
30709     7-May
30710     7-May
30711     7-May
30712     7-May
30713     7-May
30714     7-May
30715     7-May
30716     7-May
30717     7-May
30718     7-May
30719     7-May
30720     7-May
30721     7-May
30722     7-May
30723     7-May
30724     7-May
30725     7-May
30726     7-May
30727     7-May
30728     7-May
30729     7-May
30730     7-May
30731     7-May
30732     7-May
30733     7-May
30734     7-May
30735     7-May
30736     7-May
30737     7-May
30738     7-May
30739     7-May
30740     7-May
30741     7-May
30742     7-May
30743     7-May
30744     7-May
30745     7-May
30746     7-May
30747     7-May
30748     7-May
30749     7-May
30750     7-May
30751     7-May
30752     7-May
30753     7-May
30754     7-May
30755     7-May
30756     7-May
30757     7-May
30758     7-May
30759     7-May
30760     7-May
30761     7-May
30762     7-May
30763     7-May
30764     7-May
30765     7-May
30766     7-May
30767     7-May
30768     7-May
30769     7-May
30770     7-May
30771     7-May
30772     7-May
30773     7-May
30774     7-May
30775     7-May
30776     7-May
30777     7-May
30778     7-May
30779     7-May
30780     7-May
30781     7-May
30782     7-May
30783     7-May
30784     7-May
30785     7-May
30786     7-May
30787     7-May
30788     7-May
30789     7-May
30790     7-May
30791     7-May
30792     7-May
30793     7-May
30794     7-May
30795     7-May
30796     7-May
30797     7-May
30798     7-May
30799     7-May
30800     7-May
30801     7-May
30802     7-May
30803     7-May
30804     7-May
30805     7-May
30806     7-May
30807     7-May
30808     7-May
30809     7-May
30810     7-May
30811     7-May
30812     7-May
30813     7-May
30814     7-May
30815     7-May
30816     7-May
30817     7-May
30818     7-May
30819     7-May
30820     7-May
30821     7-May
30822     7-May
30823     7-May
30824     7-May
30825     7-May
30826     7-May
30827     7-May
30828     7-May
30829     7-May
30830     7-May
30831     7-May
30832     7-May
30833     7-May
30834     7-May
30835     7-May
30836     7-May
30837     7-May
30838     7-May
30839     7-May
30840     7-May
30841     7-May
30842     7-May
30843     7-May
30844     7-May
30845     7-May
30846     7-May
30847     7-May
30848     7-May
30849     7-May
30850     7-May
30851     7-May
30852     7-May
30853     7-May
30854     7-May
30855     7-May
30856     7-May
30857     7-Nov
30858     7-Nov
30859     7-Nov
30860     7-Nov
30861     7-Nov
30862     7-Nov
30863     7-Nov
30864     7-Nov
30865     7-Nov
30866     7-Nov
30867     7-Nov
30868     7-Nov
30869     7-Nov
30870     7-Nov
30871     7-Nov
30872     7-Nov
30873     7-Nov
30874     7-Nov
30875     7-Nov
30876     7-Nov
30877     7-Nov
30878     7-Nov
30879     7-Nov
30880     7-Nov
30881     7-Nov
30882     7-Nov
30883     7-Nov
30884     7-Nov
30885     7-Nov
30886     7-Nov
30887     7-Nov
30888     7-Nov
30889     7-Nov
30890     7-Nov
30891     7-Nov
30892     7-Nov
30893     7-Nov
30894     7-Nov
30895     7-Nov
30896     7-Nov
30897     7-Nov
30898     7-Nov
30899     7-Nov
30900     7-Nov
30901     7-Nov
30902     7-Nov
30903     7-Nov
30904     7-Nov
30905     7-Nov
30906     7-Nov
30907     7-Nov
30908     7-Nov
30909     7-Nov
30910     7-Nov
30911     7-Nov
30912     7-Nov
30913     7-Nov
30914     7-Nov
30915     7-Nov
30916     7-Nov
30917     7-Nov
30918     7-Nov
30919     7-Nov
30920     7-Nov
30921     7-Nov
30922     7-Nov
30923     7-Nov
30924     7-Nov
30925     7-Nov
30926     7-Nov
30927     7-Nov
30928     7-Nov
30929     7-Nov
30930     7-Nov
30931     7-Nov
30932     7-Nov
30933     7-Nov
30934     7-Nov
30935     7-Nov
30936     7-Nov
30937     7-Nov
30938     7-Nov
30939     7-Nov
30940     7-Nov
30941     7-Nov
30942     7-Nov
30943     7-Nov
30944     7-Nov
30945     7-Nov
30946     7-Nov
30947     7-Nov
30948     7-Nov
30949     7-Nov
30950     7-Nov
30951     7-Nov
30952     7-Nov
30953     7-Nov
30954     7-Nov
30955     7-Nov
30956     7-Nov
30957     7-Nov
30958     7-Nov
30959     7-Nov
30960     7-Nov
30961     7-Nov
30962     7-Nov
30963     7-Nov
30964     7-Nov
30965     7-Nov
30966     7-Nov
30967     7-Nov
30968     7-Nov
30969     7-Nov
30970     7-Nov
30971     7-Nov
30972     7-Nov
30973     7-Nov
30974     7-Nov
30975     7-Nov
30976     7-Nov
30977     7-Nov
30978     7-Nov
30979     7-Nov
30980     7-Nov
30981     7-Nov
30982     7-Nov
30983     7-Nov
30984     7-Nov
30985     7-Nov
30986     7-Nov
30987     7-Nov
30988     7-Nov
30989     7-Nov
30990     7-Nov
30991     7-Nov
30992     7-Nov
30993     7-Nov
30994     7-Nov
30995     7-Nov
30996     7-Nov
30997     7-Nov
30998     7-Nov
30999     7-Nov
31000     7-Nov
31001     7-Nov
31002     7-Nov
31003     7-Nov
31004     7-Nov
31005     7-Nov
31006     7-Nov
31007     7-Nov
31008     7-Nov
31009     7-Nov
31010     7-Nov
31011     7-Nov
31012     7-Nov
31013     7-Nov
31014     7-Nov
31015     7-Nov
31016     7-Nov
31017     7-Nov
31018     7-Nov
31019     7-Nov
31020     7-Nov
31021     7-Nov
31022     7-Oct
31023     7-Oct
31024     7-Oct
31025     7-Oct
31026     7-Oct
31027     7-Oct
31028     7-Oct
31029     7-Oct
31030     7-Oct
31031     7-Oct
31032     7-Oct
31033     7-Oct
31034     7-Oct
31035     7-Oct
31036     7-Oct
31037     7-Oct
31038     7-Oct
31039     7-Oct
31040     7-Oct
31041     7-Oct
31042     7-Oct
31043     7-Oct
31044     7-Oct
31045     7-Oct
31046     7-Oct
31047     7-Oct
31048     7-Oct
31049     7-Oct
31050     7-Oct
31051     7-Oct
31052     7-Oct
31053     7-Oct
31054     7-Oct
31055     7-Oct
31056     7-Oct
31057     7-Oct
31058     7-Oct
31059     7-Oct
31060     7-Oct
31061     7-Oct
31062     7-Oct
31063     7-Oct
31064     7-Oct
31065     7-Oct
31066     7-Oct
31067     7-Oct
31068     7-Oct
31069     7-Oct
31070     7-Oct
31071     7-Oct
31072     7-Oct
31073     7-Oct
31074     7-Oct
31075     7-Oct
31076     7-Oct
31077     7-Oct
31078     7-Oct
31079     7-Oct
31080     7-Oct
31081     7-Oct
31082     7-Oct
31083     7-Oct
31084     7-Oct
31085     7-Oct
31086     7-Oct
31087     7-Oct
31088     7-Oct
31089     7-Oct
31090     7-Oct
31091     7-Oct
31092     7-Oct
31093     7-Oct
31094     7-Oct
31095     7-Oct
31096     7-Oct
31097     7-Oct
31098     7-Oct
31099     7-Oct
31100     7-Oct
31101     7-Oct
31102     7-Oct
31103     7-Oct
31104     7-Oct
31105     7-Oct
31106     7-Oct
31107     7-Oct
31108     7-Oct
31109     7-Oct
31110     7-Oct
31111     7-Oct
31112     7-Oct
31113     7-Oct
31114     7-Oct
31115     7-Oct
31116     7-Oct
31117     7-Oct
31118     7-Oct
31119     7-Oct
31120     7-Oct
31121     7-Oct
31122     7-Oct
31123     7-Oct
31124     7-Oct
31125     7-Oct
31126     7-Oct
31127     7-Oct
31128     7-Oct
31129     7-Oct
31130     7-Oct
31131     7-Oct
31132     7-Oct
31133     7-Oct
31134     7-Oct
31135     7-Oct
31136     7-Oct
31137     7-Oct
31138     7-Oct
31139     7-Oct
31140     7-Oct
31141     7-Oct
31142     7-Oct
31143     7-Oct
31144     7-Oct
31145     7-Oct
31146     7-Oct
31147     7-Oct
31148     7-Oct
31149     7-Oct
31150     7-Oct
31151     7-Oct
31152     7-Oct
31153     7-Oct
31154     7-Oct
31155     7-Oct
31156     7-Oct
31157     7-Oct
31158     7-Oct
31159     7-Oct
31160     7-Oct
31161     7-Oct
31162     7-Oct
31163     7-Oct
31164     7-Oct
31165     7-Oct
31166     7-Oct
31167     7-Oct
31168     7-Oct
31169     7-Oct
31170     7-Oct
31171     7-Oct
31172     7-Oct
31173     7-Oct
31174     7-Oct
31175     7-Oct
31176     7-Oct
31177     7-Oct
31178     7-Oct
31179     7-Oct
31180     7-Oct
31181     7-Oct
31182     7-Oct
31183     7-Oct
31184     7-Oct
31185     7-Oct
31186     7-Oct
31187     7-Oct
31188     7-Oct
31189     7-Oct
31190     7-Oct
31191     7-Oct
31192     7-Oct
31193     7-Oct
31194     7-Oct
31195     7-Oct
31196     7-Oct
31197     7-Oct
31198     7-Oct
31199     7-Oct
31200     7-Oct
31201     7-Oct
31202     7-Oct
31203     7-Oct
31204     7-Oct
31205     7-Oct
31206     7-Oct
31207     7-Oct
31208     7-Oct
31209     7-Oct
31210     7-Oct
31211     7-Oct
31212     7-Oct
31213     7-Oct
31214     7-Oct
31215     7-Oct
31216     7-Oct
31217     7-Oct
31218     7-Oct
31219     7-Oct
31220     7-Oct
31221     7-Oct
31222     7-Oct
31223     7-Oct
31224     7-Oct
31225     7-Oct
31226     7-Oct
31227     7-Oct
31228     7-Oct
31229     7-Oct
31230     7-Oct
31231     7-Oct
31232     7-Sep
31233     7-Sep
31234     7-Sep
31235     7-Sep
31236     7-Sep
31237     7-Sep
31238     7-Sep
31239     7-Sep
31240     7-Sep
31241     7-Sep
31242     7-Sep
31243     7-Sep
31244     7-Sep
31245     7-Sep
31246     7-Sep
31247     7-Sep
31248     7-Sep
31249     7-Sep
31250     7-Sep
31251     7-Sep
31252     7-Sep
31253     7-Sep
31254     7-Sep
31255     7-Sep
31256     7-Sep
31257     7-Sep
31258     7-Sep
31259     7-Sep
31260     7-Sep
31261     7-Sep
31262     7-Sep
31263     7-Sep
31264     7-Sep
31265     7-Sep
31266     7-Sep
31267     7-Sep
31268     7-Sep
31269     7-Sep
31270     7-Sep
31271     7-Sep
31272     7-Sep
31273     7-Sep
31274     7-Sep
31275     7-Sep
31276     7-Sep
31277     7-Sep
31278     7-Sep
31279     7-Sep
31280     7-Sep
31281     7-Sep
31282     7-Sep
31283     7-Sep
31284     7-Sep
31285     7-Sep
31286     7-Sep
31287     7-Sep
31288     7-Sep
31289     7-Sep
31290     7-Sep
31291     7-Sep
31292     7-Sep
31293     7-Sep
31294     7-Sep
31295     7-Sep
31296     7-Sep
31297     7-Sep
31298     7-Sep
31299     7-Sep
31300     7-Sep
31301     7-Sep
31302     7-Sep
31303     7-Sep
31304     7-Sep
31305     7-Sep
31306     7-Sep
31307     7-Sep
31308     7-Sep
31309     7-Sep
31310     7-Sep
31311     7-Sep
31312     7-Sep
31313     7-Sep
31314     7-Sep
31315     7-Sep
31316     7-Sep
31317     7-Sep
31318     7-Sep
31319     7-Sep
31320     7-Sep
31321     7-Sep
31322     7-Sep
31323     7-Sep
31324     7-Sep
31325     7-Sep
31326     7-Sep
31327     7-Sep
31328     7-Sep
31329     7-Sep
31330     7-Sep
31331     7-Sep
31332     7-Sep
31333     7-Sep
31334     7-Sep
31335     7-Sep
31336     7-Sep
31337     7-Sep
31338     7-Sep
31339     7-Sep
31340     7-Sep
31341     7-Sep
31342     7-Sep
31343     7-Sep
31344     7-Sep
31345     7-Sep
31346     7-Sep
31347     7-Sep
31348     7-Sep
31349     7-Sep
31350     7-Sep
31351     7-Sep
31352     7-Sep
31353     7-Sep
31354     7-Sep
31355     7-Sep
31356     7-Sep
31357     7-Sep
31358     7-Sep
31359     7-Sep
31360     7-Sep
31361     7-Sep
31362     7-Sep
31363     7-Sep
31364     7-Sep
31365     7-Sep
31366     7-Sep
31367     7-Sep
31368     7-Sep
31369     7-Sep
31370     7-Sep
31371     7-Sep
31372     7-Sep
31373     7-Sep
31374     7-Sep
31375     7-Sep
31376     7-Sep
31377     7-Sep
31378     7-Sep
31379     7-Sep
31380     7-Sep
31381     7-Sep
31382     7-Sep
31383     7-Sep
31384     7-Sep
31385     7-Sep
31386     7-Sep
31387     7-Sep
31388     7-Sep
31389     7-Sep
31390     7-Sep
31391     7-Sep
31392     7-Sep
31393     7-Sep
31394     7-Sep
31395     7-Sep
31396     7-Sep
31397     7-Sep
31398     7-Sep
31399     7-Sep
31400     7-Sep
31401     7-Sep
31402     7-Sep
31403     7-Sep
31404     7-Sep
31405     7-Sep
31406     7-Sep
31407     7-Sep
31408     7-Sep
31409     7-Sep
31410     7-Sep
31411     7-Sep
31412     7-Sep
31413     7-Sep
31414     7-Sep
31415     7-Sep
31416     7-Sep
31417     7-Sep
31418     7-Sep
31419     7-Sep
31420     7-Sep
31421     7-Sep
31422     7-Sep
31423     7-Sep
31424     7-Sep
31425     7-Sep
31426     7-Sep
31427     7-Sep
31428     7-Sep
31429     7-Sep
31430     7-Sep
31431     7-Sep
31432     7-Sep
31433     7-Sep
31434     7-Sep
31435     7-Sep
31436     7-Sep
31437     7-Sep
31438     7-Sep
31439     7-Sep
31440     7-Sep
31441     7-Sep
31442     7-Sep
31443     7-Sep
31444     7-Sep
31445     7-Sep
31446     7-Sep
31447     7-Sep
31448     7-Sep
31449     8-Apr
31450     8-Apr
31451     8-Apr
31452     8-Apr
31453     8-Apr
31454     8-Apr
31455     8-Apr
31456     8-Apr
31457     8-Apr
31458     8-Apr
31459     8-Apr
31460     8-Apr
31461     8-Apr
31462     8-Apr
31463     8-Apr
31464     8-Apr
31465     8-Apr
31466     8-Apr
31467     8-Apr
31468     8-Apr
31469     8-Apr
31470     8-Apr
31471     8-Apr
31472     8-Apr
31473     8-Apr
31474     8-Apr
31475     8-Apr
31476     8-Apr
31477     8-Apr
31478     8-Apr
31479     8-Apr
31480     8-Apr
31481     8-Apr
31482     8-Apr
31483     8-Apr
31484     8-Apr
31485     8-Apr
31486     8-Apr
31487     8-Apr
31488     8-Apr
31489     8-Apr
31490     8-Apr
31491     8-Apr
31492     8-Apr
31493     8-Apr
31494     8-Apr
31495     8-Apr
31496     8-Apr
31497     8-Apr
31498     8-Apr
31499     8-Apr
31500     8-Apr
31501     8-Apr
31502     8-Apr
31503     8-Apr
31504     8-Apr
31505     8-Apr
31506     8-Apr
31507     8-Apr
31508     8-Apr
31509     8-Apr
31510     8-Apr
31511     8-Apr
31512     8-Apr
31513     8-Apr
31514     8-Apr
31515     8-Apr
31516     8-Apr
31517     8-Apr
31518     8-Apr
31519     8-Apr
31520     8-Apr
31521     8-Apr
31522     8-Apr
31523     8-Apr
31524     8-Apr
31525     8-Apr
31526     8-Apr
31527     8-Apr
31528     8-Apr
31529     8-Apr
31530     8-Apr
31531     8-Apr
31532     8-Apr
31533     8-Apr
31534     8-Apr
31535     8-Apr
31536     8-Apr
31537     8-Apr
31538     8-Apr
31539     8-Apr
31540     8-Apr
31541     8-Apr
31542     8-Apr
31543     8-Apr
31544     8-Apr
31545     8-Apr
31546     8-Apr
31547     8-Apr
31548     8-Apr
31549     8-Apr
31550     8-Apr
31551     8-Apr
31552     8-Apr
31553     8-Apr
31554     8-Apr
31555     8-Apr
31556     8-Apr
31557     8-Apr
31558     8-Apr
31559     8-Apr
31560     8-Apr
31561     8-Apr
31562     8-Apr
31563     8-Apr
31564     8-Apr
31565     8-Apr
31566     8-Apr
31567     8-Apr
31568     8-Apr
31569     8-Apr
31570     8-Apr
31571     8-Apr
31572     8-Aug
31573     8-Aug
31574     8-Aug
31575     8-Aug
31576     8-Aug
31577     8-Aug
31578     8-Aug
31579     8-Aug
31580     8-Aug
31581     8-Aug
31582     8-Aug
31583     8-Aug
31584     8-Aug
31585     8-Aug
31586     8-Aug
31587     8-Aug
31588     8-Aug
31589     8-Aug
31590     8-Aug
31591     8-Aug
31592     8-Aug
31593     8-Aug
31594     8-Aug
31595     8-Aug
31596     8-Aug
31597     8-Aug
31598     8-Aug
31599     8-Aug
31600     8-Aug
31601     8-Aug
31602     8-Aug
31603     8-Aug
31604     8-Aug
31605     8-Aug
31606     8-Aug
31607     8-Aug
31608     8-Aug
31609     8-Aug
31610     8-Aug
31611     8-Aug
31612     8-Aug
31613     8-Aug
31614     8-Aug
31615     8-Aug
31616     8-Aug
31617     8-Aug
31618     8-Aug
31619     8-Aug
31620     8-Aug
31621     8-Aug
31622     8-Aug
31623     8-Aug
31624     8-Aug
31625     8-Aug
31626     8-Aug
31627     8-Aug
31628     8-Aug
31629     8-Aug
31630     8-Aug
31631     8-Aug
31632     8-Aug
31633     8-Aug
31634     8-Aug
31635     8-Aug
31636     8-Aug
31637     8-Aug
31638     8-Aug
31639     8-Aug
31640     8-Aug
31641     8-Aug
31642     8-Aug
31643     8-Aug
31644     8-Aug
31645     8-Aug
31646     8-Aug
31647     8-Aug
31648     8-Aug
31649     8-Aug
31650     8-Aug
31651     8-Aug
31652     8-Aug
31653     8-Aug
31654     8-Aug
31655     8-Aug
31656     8-Aug
31657     8-Aug
31658     8-Aug
31659     8-Aug
31660     8-Aug
31661     8-Aug
31662     8-Aug
31663     8-Aug
31664     8-Aug
31665     8-Aug
31666     8-Aug
31667     8-Aug
31668     8-Aug
31669     8-Aug
31670     8-Aug
31671     8-Aug
31672     8-Aug
31673     8-Aug
31674     8-Aug
31675     8-Aug
31676     8-Aug
31677     8-Aug
31678     8-Aug
31679     8-Aug
31680     8-Aug
31681     8-Aug
31682     8-Aug
31683     8-Aug
31684     8-Aug
31685     8-Aug
31686     8-Aug
31687     8-Aug
31688     8-Aug
31689     8-Aug
31690     8-Aug
31691     8-Aug
31692     8-Aug
31693     8-Aug
31694     8-Aug
31695     8-Aug
31696     8-Aug
31697     8-Aug
31698     8-Aug
31699     8-Aug
31700     8-Aug
31701     8-Aug
31702     8-Aug
31703     8-Aug
31704     8-Aug
31705     8-Aug
31706     8-Aug
31707     8-Aug
31708     8-Aug
31709     8-Aug
31710     8-Aug
31711     8-Aug
31712     8-Aug
31713     8-Aug
31714     8-Aug
31715     8-Aug
31716     8-Aug
31717     8-Aug
31718     8-Aug
31719     8-Aug
31720     8-Aug
31721     8-Aug
31722     8-Aug
31723     8-Aug
31724     8-Aug
31725     8-Aug
31726     8-Aug
31727     8-Aug
31728     8-Aug
31729     8-Aug
31730     8-Aug
31731     8-Aug
31732     8-Aug
31733     8-Aug
31734     8-Aug
31735     8-Aug
31736     8-Aug
31737     8-Aug
31738     8-Aug
31739     8-Aug
31740     8-Aug
31741     8-Aug
31742     8-Aug
31743     8-Aug
31744     8-Aug
31745     8-Aug
31746     8-Aug
31747     8-Aug
31748     8-Aug
31749     8-Aug
31750     8-Aug
31751     8-Dec
31752     8-Dec
31753     8-Dec
31754     8-Dec
31755     8-Dec
31756     8-Dec
31757     8-Dec
31758     8-Dec
31759     8-Dec
31760     8-Dec
31761     8-Dec
31762     8-Dec
31763     8-Dec
31764     8-Dec
31765     8-Dec
31766     8-Dec
31767     8-Dec
31768     8-Dec
31769     8-Dec
31770     8-Dec
31771     8-Dec
31772     8-Dec
31773     8-Dec
31774     8-Dec
31775     8-Dec
31776     8-Dec
31777     8-Dec
31778     8-Dec
31779     8-Dec
31780     8-Dec
31781     8-Dec
31782     8-Dec
31783     8-Dec
31784     8-Dec
31785     8-Dec
31786     8-Dec
31787     8-Dec
31788     8-Dec
31789     8-Dec
31790     8-Dec
31791     8-Dec
31792     8-Dec
31793     8-Dec
31794     8-Dec
31795     8-Dec
31796     8-Dec
31797     8-Dec
31798     8-Dec
31799     8-Dec
31800     8-Dec
31801     8-Dec
31802     8-Dec
31803     8-Dec
31804     8-Dec
31805     8-Dec
31806     8-Dec
31807     8-Dec
31808     8-Dec
31809     8-Dec
31810     8-Dec
31811     8-Dec
31812     8-Dec
31813     8-Dec
31814     8-Dec
31815     8-Dec
31816     8-Dec
31817     8-Dec
31818     8-Dec
31819     8-Dec
31820     8-Dec
31821     8-Dec
31822     8-Dec
31823     8-Dec
31824     8-Dec
31825     8-Feb
31826     8-Feb
31827     8-Feb
31828     8-Feb
31829     8-Feb
31830     8-Feb
31831     8-Feb
31832     8-Feb
31833     8-Feb
31834     8-Feb
31835     8-Feb
31836     8-Feb
31837     8-Feb
31838     8-Feb
31839     8-Feb
31840     8-Feb
31841     8-Feb
31842     8-Feb
31843     8-Feb
31844     8-Feb
31845     8-Feb
31846     8-Feb
31847     8-Feb
31848     8-Feb
31849     8-Feb
31850     8-Feb
31851     8-Feb
31852     8-Feb
31853     8-Feb
31854     8-Feb
31855     8-Feb
31856     8-Feb
31857     8-Feb
31858     8-Feb
31859     8-Feb
31860     8-Feb
31861     8-Feb
31862     8-Feb
31863     8-Feb
31864     8-Feb
31865     8-Feb
31866     8-Feb
31867     8-Feb
31868     8-Feb
31869     8-Feb
31870     8-Feb
31871     8-Feb
31872     8-Feb
31873     8-Feb
31874     8-Feb
31875     8-Feb
31876     8-Feb
31877     8-Feb
31878     8-Feb
31879     8-Feb
31880     8-Feb
31881     8-Feb
31882     8-Feb
31883     8-Feb
31884     8-Feb
31885     8-Feb
31886     8-Feb
31887     8-Feb
31888     8-Feb
31889     8-Feb
31890     8-Feb
31891     8-Feb
31892     8-Feb
31893     8-Feb
31894     8-Feb
31895     8-Feb
31896     8-Feb
31897     8-Feb
31898     8-Feb
31899     8-Feb
31900     8-Feb
31901     8-Feb
31902     8-Feb
31903     8-Feb
31904     8-Feb
31905     8-Feb
31906     8-Feb
31907     8-Feb
31908     8-Feb
31909     8-Feb
31910     8-Feb
31911     8-Feb
31912     8-Feb
31913     8-Feb
31914     8-Feb
31915     8-Feb
31916     8-Feb
31917     8-Feb
31918     8-Feb
31919     8-Feb
31920     8-Feb
31921     8-Feb
31922     8-Feb
31923     8-Feb
31924     8-Feb
31925     8-Feb
31926     8-Feb
31927     8-Feb
31928     8-Feb
31929     8-Feb
31930     8-Feb
31931     8-Feb
31932     8-Feb
31933     8-Feb
31934     8-Feb
31935     8-Feb
31936     8-Feb
31937     8-Feb
31938     8-Feb
31939     8-Feb
31940     8-Feb
31941     8-Feb
31942     8-Feb
31943     8-Feb
31944     8-Feb
31945     8-Feb
31946     8-Feb
31947     8-Feb
31948     8-Feb
31949     8-Feb
31950     8-Feb
31951     8-Feb
31952     8-Feb
31953     8-Feb
31954     8-Feb
31955     8-Feb
31956     8-Feb
31957     8-Feb
31958     8-Feb
31959     8-Feb
31960     8-Feb
31961     8-Feb
31962     8-Feb
31963     8-Feb
31964     8-Feb
31965     8-Feb
31966     8-Feb
31967     8-Feb
31968     8-Feb
31969     8-Feb
31970     8-Feb
31971     8-Feb
31972     8-Feb
31973     8-Feb
31974     8-Feb
31975     8-Feb
31976     8-Feb
31977     8-Feb
31978     8-Feb
31979     8-Feb
31980     8-Feb
31981     8-Feb
31982     8-Jan
31983     8-Jan
31984     8-Jan
31985     8-Jan
31986     8-Jan
31987     8-Jan
31988     8-Jan
31989     8-Jan
31990     8-Jan
31991     8-Jan
31992     8-Jan
31993     8-Jan
31994     8-Jan
31995     8-Jan
31996     8-Jan
31997     8-Jan
31998     8-Jan
31999     8-Jan
32000     8-Jan
32001     8-Jan
32002     8-Jan
32003     8-Jan
32004     8-Jan
32005     8-Jan
32006     8-Jan
32007     8-Jan
32008     8-Jan
32009     8-Jan
32010     8-Jan
32011     8-Jan
32012     8-Jan
32013     8-Jan
32014     8-Jan
32015     8-Jan
32016     8-Jan
32017     8-Jan
32018     8-Jan
32019     8-Jan
32020     8-Jan
32021     8-Jan
32022     8-Jan
32023     8-Jan
32024     8-Jan
32025     8-Jan
32026     8-Jan
32027     8-Jan
32028     8-Jan
32029     8-Jan
32030     8-Jan
32031     8-Jan
32032     8-Jan
32033     8-Jan
32034     8-Jan
32035     8-Jan
32036     8-Jan
32037     8-Jan
32038     8-Jan
32039     8-Jan
32040     8-Jan
32041     8-Jan
32042     8-Jan
32043     8-Jan
32044     8-Jan
32045     8-Jan
32046     8-Jan
32047     8-Jan
32048     8-Jan
32049     8-Jan
32050     8-Jan
32051     8-Jan
32052     8-Jan
32053     8-Jan
32054     8-Jan
32055     8-Jan
32056     8-Jan
32057     8-Jan
32058     8-Jan
32059     8-Jan
32060     8-Jan
32061     8-Jan
32062     8-Jan
32063     8-Jan
32064     8-Jan
32065     8-Jan
32066     8-Jan
32067     8-Jan
32068     8-Jan
32069     8-Jan
32070     8-Jan
32071     8-Jan
32072     8-Jan
32073     8-Jan
32074     8-Jan
32075     8-Jan
32076     8-Jan
32077     8-Jan
32078     8-Jan
32079     8-Jan
32080     8-Jan
32081     8-Jan
32082     8-Jan
32083     8-Jan
32084     8-Jan
32085     8-Jan
32086     8-Jan
32087     8-Jan
32088     8-Jan
32089     8-Jan
32090     8-Jan
32091     8-Jan
32092     8-Jan
32093     8-Jan
32094     8-Jan
32095     8-Jan
32096     8-Jan
32097     8-Jan
32098     8-Jan
32099     8-Jan
32100     8-Jan
32101     8-Jan
32102     8-Jan
32103     8-Jan
32104     8-Jan
32105     8-Jan
32106     8-Jan
32107     8-Jan
32108     8-Jan
32109     8-Jan
32110     8-Jan
32111     8-Jan
32112     8-Jan
32113     8-Jan
32114     8-Jan
32115     8-Jul
32116     8-Jul
32117     8-Jul
32118     8-Jul
32119     8-Jul
32120     8-Jul
32121     8-Jul
32122     8-Jul
32123     8-Jul
32124     8-Jul
32125     8-Jul
32126     8-Jul
32127     8-Jul
32128     8-Jul
32129     8-Jul
32130     8-Jul
32131     8-Jul
32132     8-Jul
32133     8-Jul
32134     8-Jul
32135     8-Jul
32136     8-Jul
32137     8-Jul
32138     8-Jul
32139     8-Jul
32140     8-Jul
32141     8-Jul
32142     8-Jul
32143     8-Jul
32144     8-Jul
32145     8-Jul
32146     8-Jul
32147     8-Jul
32148     8-Jul
32149     8-Jul
32150     8-Jul
32151     8-Jul
32152     8-Jul
32153     8-Jul
32154     8-Jul
32155     8-Jul
32156     8-Jul
32157     8-Jul
32158     8-Jul
32159     8-Jul
32160     8-Jul
32161     8-Jul
32162     8-Jul
32163     8-Jul
32164     8-Jul
32165     8-Jul
32166     8-Jul
32167     8-Jul
32168     8-Jul
32169     8-Jul
32170     8-Jul
32171     8-Jul
32172     8-Jul
32173     8-Jul
32174     8-Jul
32175     8-Jul
32176     8-Jul
32177     8-Jul
32178     8-Jul
32179     8-Jul
32180     8-Jul
32181     8-Jul
32182     8-Jul
32183     8-Jul
32184     8-Jul
32185     8-Jul
32186     8-Jul
32187     8-Jul
32188     8-Jul
32189     8-Jul
32190     8-Jul
32191     8-Jul
32192     8-Jul
32193     8-Jul
32194     8-Jul
32195     8-Jul
32196     8-Jul
32197     8-Jul
32198     8-Jul
32199     8-Jul
32200     8-Jul
32201     8-Jul
32202     8-Jul
32203     8-Jul
32204     8-Jul
32205     8-Jul
32206     8-Jul
32207     8-Jul
32208     8-Jul
32209     8-Jul
32210     8-Jul
32211     8-Jul
32212     8-Jul
32213     8-Jul
32214     8-Jul
32215     8-Jul
32216     8-Jul
32217     8-Jul
32218     8-Jul
32219     8-Jul
32220     8-Jul
32221     8-Jul
32222     8-Jul
32223     8-Jul
32224     8-Jul
32225     8-Jul
32226     8-Jul
32227     8-Jul
32228     8-Jul
32229     8-Jul
32230     8-Jul
32231     8-Jul
32232     8-Jul
32233     8-Jul
32234     8-Jul
32235     8-Jul
32236     8-Jul
32237     8-Jul
32238     8-Jul
32239     8-Jul
32240     8-Jul
32241     8-Jul
32242     8-Jul
32243     8-Jul
32244     8-Jul
32245     8-Jul
32246     8-Jul
32247     8-Jul
32248     8-Jul
32249     8-Jul
32250     8-Jul
32251     8-Jul
32252     8-Jul
32253     8-Jul
32254     8-Jul
32255     8-Jul
32256     8-Jul
32257     8-Jul
32258     8-Jul
32259     8-Jun
32260     8-Jun
32261     8-Jun
32262     8-Jun
32263     8-Jun
32264     8-Jun
32265     8-Jun
32266     8-Jun
32267     8-Jun
32268     8-Jun
32269     8-Jun
32270     8-Jun
32271     8-Jun
32272     8-Jun
32273     8-Jun
32274     8-Jun
32275     8-Jun
32276     8-Jun
32277     8-Jun
32278     8-Jun
32279     8-Jun
32280     8-Jun
32281     8-Jun
32282     8-Jun
32283     8-Jun
32284     8-Jun
32285     8-Jun
32286     8-Jun
32287     8-Jun
32288     8-Jun
32289     8-Jun
32290     8-Jun
32291     8-Jun
32292     8-Jun
32293     8-Jun
32294     8-Jun
32295     8-Jun
32296     8-Jun
32297     8-Jun
32298     8-Jun
32299     8-Jun
32300     8-Jun
32301     8-Jun
32302     8-Jun
32303     8-Jun
32304     8-Jun
32305     8-Jun
32306     8-Jun
32307     8-Jun
32308     8-Jun
32309     8-Jun
32310     8-Jun
32311     8-Jun
32312     8-Jun
32313     8-Jun
32314     8-Jun
32315     8-Jun
32316     8-Jun
32317     8-Jun
32318     8-Jun
32319     8-Jun
32320     8-Jun
32321     8-Jun
32322     8-Jun
32323     8-Jun
32324     8-Jun
32325     8-Jun
32326     8-Jun
32327     8-Jun
32328     8-Jun
32329     8-Jun
32330     8-Jun
32331     8-Jun
32332     8-Jun
32333     8-Jun
32334     8-Jun
32335     8-Jun
32336     8-Jun
32337     8-Jun
32338     8-Jun
32339     8-Jun
32340     8-Jun
32341     8-Jun
32342     8-Jun
32343     8-Jun
32344     8-Jun
32345     8-Jun
32346     8-Jun
32347     8-Jun
32348     8-Jun
32349     8-Jun
32350     8-Jun
32351     8-Jun
32352     8-Jun
32353     8-Jun
32354     8-Jun
32355     8-Jun
32356     8-Jun
32357     8-Jun
32358     8-Jun
32359     8-Jun
32360     8-Jun
32361     8-Jun
32362     8-Jun
32363     8-Jun
32364     8-Jun
32365     8-Jun
32366     8-Jun
32367     8-Jun
32368     8-Jun
32369     8-Jun
32370     8-Jun
32371     8-Jun
32372     8-Jun
32373     8-Jun
32374     8-Jun
32375     8-Jun
32376     8-Jun
32377     8-Jun
32378     8-Jun
32379     8-Jun
32380     8-Jun
32381     8-Jun
32382     8-Jun
32383     8-Jun
32384     8-Mar
32385     8-Mar
32386     8-Mar
32387     8-Mar
32388     8-Mar
32389     8-Mar
32390     8-Mar
32391     8-Mar
32392     8-Mar
32393     8-Mar
32394     8-Mar
32395     8-Mar
32396     8-Mar
32397     8-Mar
32398     8-Mar
32399     8-Mar
32400     8-Mar
32401     8-Mar
32402     8-Mar
32403     8-Mar
32404     8-Mar
32405     8-Mar
32406     8-Mar
32407     8-Mar
32408     8-Mar
32409     8-Mar
32410     8-Mar
32411     8-Mar
32412     8-Mar
32413     8-Mar
32414     8-Mar
32415     8-Mar
32416     8-Mar
32417     8-Mar
32418     8-Mar
32419     8-Mar
32420     8-Mar
32421     8-Mar
32422     8-Mar
32423     8-Mar
32424     8-Mar
32425     8-Mar
32426     8-Mar
32427     8-Mar
32428     8-Mar
32429     8-Mar
32430     8-Mar
32431     8-Mar
32432     8-Mar
32433     8-Mar
32434     8-Mar
32435     8-Mar
32436     8-Mar
32437     8-Mar
32438     8-Mar
32439     8-Mar
32440     8-Mar
32441     8-Mar
32442     8-Mar
32443     8-Mar
32444     8-Mar
32445     8-Mar
32446     8-Mar
32447     8-Mar
32448     8-Mar
32449     8-Mar
32450     8-Mar
32451     8-Mar
32452     8-Mar
32453     8-Mar
32454     8-Mar
32455     8-Mar
32456     8-Mar
32457     8-Mar
32458     8-Mar
32459     8-Mar
32460     8-Mar
32461     8-Mar
32462     8-Mar
32463     8-Mar
32464     8-Mar
32465     8-Mar
32466     8-Mar
32467     8-Mar
32468     8-Mar
32469     8-Mar
32470     8-Mar
32471     8-Mar
32472     8-Mar
32473     8-Mar
32474     8-Mar
32475     8-Mar
32476     8-Mar
32477     8-Mar
32478     8-Mar
32479     8-Mar
32480     8-Mar
32481     8-Mar
32482     8-Mar
32483     8-Mar
32484     8-Mar
32485     8-Mar
32486     8-Mar
32487     8-Mar
32488     8-Mar
32489     8-Mar
32490     8-Mar
32491     8-Mar
32492     8-Mar
32493     8-Mar
32494     8-Mar
32495     8-Mar
32496     8-Mar
32497     8-Mar
32498     8-Mar
32499     8-Mar
32500     8-Mar
32501     8-Mar
32502     8-Mar
32503     8-Mar
32504     8-Mar
32505     8-May
32506     8-May
32507     8-May
32508     8-May
32509     8-May
32510     8-May
32511     8-May
32512     8-May
32513     8-May
32514     8-May
32515     8-May
32516     8-May
32517     8-May
32518     8-May
32519     8-May
32520     8-May
32521     8-May
32522     8-May
32523     8-May
32524     8-May
32525     8-May
32526     8-May
32527     8-May
32528     8-May
32529     8-May
32530     8-May
32531     8-May
32532     8-May
32533     8-May
32534     8-May
32535     8-May
32536     8-May
32537     8-May
32538     8-May
32539     8-May
32540     8-May
32541     8-May
32542     8-May
32543     8-May
32544     8-May
32545     8-May
32546     8-May
32547     8-May
32548     8-May
32549     8-May
32550     8-May
32551     8-May
32552     8-May
32553     8-May
32554     8-May
32555     8-May
32556     8-May
32557     8-May
32558     8-May
32559     8-May
32560     8-May
32561     8-May
32562     8-May
32563     8-May
32564     8-May
32565     8-May
32566     8-May
32567     8-May
32568     8-May
32569     8-May
32570     8-May
32571     8-May
32572     8-May
32573     8-May
32574     8-May
32575     8-May
32576     8-May
32577     8-May
32578     8-May
32579     8-May
32580     8-May
32581     8-May
32582     8-May
32583     8-May
32584     8-May
32585     8-May
32586     8-May
32587     8-May
32588     8-May
32589     8-May
32590     8-May
32591     8-May
32592     8-May
32593     8-May
32594     8-May
32595     8-May
32596     8-May
32597     8-May
32598     8-May
32599     8-May
32600     8-May
32601     8-May
32602     8-May
32603     8-May
32604     8-May
32605     8-May
32606     8-May
32607     8-May
32608     8-May
32609     8-May
32610     8-May
32611     8-May
32612     8-May
32613     8-May
32614     8-May
32615     8-May
32616     8-May
32617     8-May
32618     8-May
32619     8-May
32620     8-May
32621     8-May
32622     8-May
32623     8-May
32624     8-May
32625     8-May
32626     8-May
32627     8-May
32628     8-Nov
32629     8-Nov
32630     8-Nov
32631     8-Nov
32632     8-Nov
32633     8-Nov
32634     8-Nov
32635     8-Nov
32636     8-Nov
32637     8-Nov
32638     8-Nov
32639     8-Nov
32640     8-Nov
32641     8-Nov
32642     8-Nov
32643     8-Nov
32644     8-Nov
32645     8-Nov
32646     8-Nov
32647     8-Nov
32648     8-Nov
32649     8-Nov
32650     8-Nov
32651     8-Nov
32652     8-Nov
32653     8-Nov
32654     8-Nov
32655     8-Nov
32656     8-Nov
32657     8-Nov
32658     8-Nov
32659     8-Nov
32660     8-Nov
32661     8-Nov
32662     8-Nov
32663     8-Nov
32664     8-Nov
32665     8-Nov
32666     8-Nov
32667     8-Nov
32668     8-Nov
32669     8-Nov
32670     8-Nov
32671     8-Nov
32672     8-Nov
32673     8-Nov
32674     8-Nov
32675     8-Nov
32676     8-Nov
32677     8-Nov
32678     8-Nov
32679     8-Nov
32680     8-Nov
32681     8-Nov
32682     8-Nov
32683     8-Nov
32684     8-Nov
32685     8-Nov
32686     8-Nov
32687     8-Nov
32688     8-Nov
32689     8-Nov
32690     8-Nov
32691     8-Nov
32692     8-Nov
32693     8-Nov
32694     8-Nov
32695     8-Nov
32696     8-Nov
32697     8-Nov
32698     8-Nov
32699     8-Nov
32700     8-Nov
32701     8-Nov
32702     8-Nov
32703     8-Nov
32704     8-Nov
32705     8-Nov
32706     8-Nov
32707     8-Nov
32708     8-Nov
32709     8-Nov
32710     8-Nov
32711     8-Nov
32712     8-Nov
32713     8-Nov
32714     8-Nov
32715     8-Nov
32716     8-Nov
32717     8-Nov
32718     8-Nov
32719     8-Nov
32720     8-Nov
32721     8-Nov
32722     8-Nov
32723     8-Nov
32724     8-Nov
32725     8-Nov
32726     8-Nov
32727     8-Nov
32728     8-Oct
32729     8-Oct
32730     8-Oct
32731     8-Oct
32732     8-Oct
32733     8-Oct
32734     8-Oct
32735     8-Oct
32736     8-Oct
32737     8-Oct
32738     8-Oct
32739     8-Oct
32740     8-Oct
32741     8-Oct
32742     8-Oct
32743     8-Oct
32744     8-Oct
32745     8-Oct
32746     8-Oct
32747     8-Oct
32748     8-Oct
32749     8-Oct
32750     8-Oct
32751     8-Oct
32752     8-Oct
32753     8-Oct
32754     8-Oct
32755     8-Oct
32756     8-Oct
32757     8-Oct
32758     8-Oct
32759     8-Oct
32760     8-Oct
32761     8-Oct
32762     8-Oct
32763     8-Oct
32764     8-Oct
32765     8-Oct
32766     8-Oct
32767     8-Oct
32768     8-Oct
32769     8-Oct
32770     8-Oct
32771     8-Oct
32772     8-Oct
32773     8-Oct
32774     8-Oct
32775     8-Oct
32776     8-Oct
32777     8-Oct
32778     8-Oct
32779     8-Oct
32780     8-Oct
32781     8-Oct
32782     8-Oct
32783     8-Oct
32784     8-Oct
32785     8-Oct
32786     8-Oct
32787     8-Oct
32788     8-Oct
32789     8-Oct
32790     8-Oct
32791     8-Oct
32792     8-Oct
32793     8-Oct
32794     8-Oct
32795     8-Oct
32796     8-Oct
32797     8-Oct
32798     8-Oct
32799     8-Oct
32800     8-Oct
32801     8-Oct
32802     8-Oct
32803     8-Oct
32804     8-Oct
32805     8-Oct
32806     8-Oct
32807     8-Oct
32808     8-Oct
32809     8-Oct
32810     8-Oct
32811     8-Oct
32812     8-Oct
32813     8-Oct
32814     8-Oct
32815     8-Oct
32816     8-Oct
32817     8-Oct
32818     8-Oct
32819     8-Oct
32820     8-Oct
32821     8-Oct
32822     8-Oct
32823     8-Oct
32824     8-Oct
32825     8-Oct
32826     8-Oct
32827     8-Oct
32828     8-Oct
32829     8-Oct
32830     8-Oct
32831     8-Oct
32832     8-Oct
32833     8-Oct
32834     8-Oct
32835     8-Oct
32836     8-Oct
32837     8-Oct
32838     8-Oct
32839     8-Oct
32840     8-Oct
32841     8-Oct
32842     8-Oct
32843     8-Oct
32844     8-Oct
32845     8-Oct
32846     8-Oct
32847     8-Oct
32848     8-Oct
32849     8-Oct
32850     8-Oct
32851     8-Oct
32852     8-Oct
32853     8-Oct
32854     8-Oct
32855     8-Sep
32856     8-Sep
32857     8-Sep
32858     8-Sep
32859     8-Sep
32860     8-Sep
32861     8-Sep
32862     8-Sep
32863     8-Sep
32864     8-Sep
32865     8-Sep
32866     8-Sep
32867     8-Sep
32868     8-Sep
32869     8-Sep
32870     8-Sep
32871     8-Sep
32872     8-Sep
32873     8-Sep
32874     8-Sep
32875     8-Sep
32876     8-Sep
32877     8-Sep
32878     8-Sep
32879     8-Sep
32880     8-Sep
32881     8-Sep
32882     8-Sep
32883     8-Sep
32884     8-Sep
32885     8-Sep
32886     8-Sep
32887     8-Sep
32888     8-Sep
32889     8-Sep
32890     8-Sep
32891     8-Sep
32892     8-Sep
32893     8-Sep
32894     8-Sep
32895     8-Sep
32896     8-Sep
32897     8-Sep
32898     8-Sep
32899     8-Sep
32900     8-Sep
32901     8-Sep
32902     8-Sep
32903     8-Sep
32904     8-Sep
32905     8-Sep
32906     8-Sep
32907     8-Sep
32908     8-Sep
32909     8-Sep
32910     8-Sep
32911     8-Sep
32912     8-Sep
32913     8-Sep
32914     8-Sep
32915     8-Sep
32916     8-Sep
32917     8-Sep
32918     8-Sep
32919     8-Sep
32920     8-Sep
32921     8-Sep
32922     8-Sep
32923     8-Sep
32924     8-Sep
32925     8-Sep
32926     8-Sep
32927     8-Sep
32928     8-Sep
32929     8-Sep
32930     8-Sep
32931     8-Sep
32932     8-Sep
32933     8-Sep
32934     8-Sep
32935     8-Sep
32936     8-Sep
32937     8-Sep
32938     8-Sep
32939     8-Sep
32940     8-Sep
32941     8-Sep
32942     8-Sep
32943     8-Sep
32944     8-Sep
32945     8-Sep
32946     8-Sep
32947     8-Sep
32948     8-Sep
32949     8-Sep
32950     8-Sep
32951     8-Sep
32952     8-Sep
32953     8-Sep
32954     8-Sep
32955     8-Sep
32956     8-Sep
32957     8-Sep
32958     8-Sep
32959     8-Sep
32960     8-Sep
32961     8-Sep
32962     8-Sep
32963     8-Sep
32964     8-Sep
32965     8-Sep
32966     8-Sep
32967     8-Sep
32968     8-Sep
32969     8-Sep
32970     8-Sep
32971     8-Sep
32972     8-Sep
32973     8-Sep
32974     8-Sep
32975     8-Sep
32976     8-Sep
32977     8-Sep
32978     8-Sep
32979     8-Sep
32980     8-Sep
32981     8-Sep
32982     8-Sep
32983     8-Sep
32984     8-Sep
32985     8-Sep
32986     8-Sep
32987     8-Sep
32988     8-Sep
32989     8-Sep
32990     8-Sep
32991     8-Sep
32992     8-Sep
32993     8-Sep
32994     8-Sep
32995     8-Sep
32996     8-Sep
32997     8-Sep
32998     8-Sep
32999     8-Sep
33000     8-Sep
33001     8-Sep
33002     8-Sep
33003     8-Sep
33004     8-Sep
33005     8-Sep
33006     8-Sep
33007     8-Sep
33008     8-Sep
33009     8-Sep
33010     8-Sep
33011     8-Sep
33012     8-Sep
33013     8-Sep
33014     8-Sep
33015     8-Sep
33016     8-Sep
33017     8-Sep
33018     8-Sep
33019     8-Sep
33020     8-Sep
33021     8-Sep
33022     8-Sep
33023     8-Sep
33024     8-Sep
33025     8-Sep
33026     8-Sep
33027     8-Sep
33028     8-Sep
33029     8-Sep
33030     8-Sep
33031     8-Sep
33032     9-Apr
33033     9-Apr
33034     9-Apr
33035     9-Apr
33036     9-Apr
33037     9-Apr
33038     9-Apr
33039     9-Apr
33040     9-Apr
33041     9-Apr
33042     9-Apr
33043     9-Apr
33044     9-Apr
33045     9-Apr
33046     9-Apr
33047     9-Apr
33048     9-Apr
33049     9-Apr
33050     9-Apr
33051     9-Apr
33052     9-Apr
33053     9-Apr
33054     9-Apr
33055     9-Apr
33056     9-Apr
33057     9-Apr
33058     9-Apr
33059     9-Apr
33060     9-Apr
33061     9-Apr
33062     9-Apr
33063     9-Apr
33064     9-Apr
33065     9-Apr
33066     9-Apr
33067     9-Apr
33068     9-Apr
33069     9-Apr
33070     9-Apr
33071     9-Apr
33072     9-Apr
33073     9-Apr
33074     9-Apr
33075     9-Apr
33076     9-Apr
33077     9-Apr
33078     9-Apr
33079     9-Apr
33080     9-Apr
33081     9-Apr
33082     9-Apr
33083     9-Apr
33084     9-Apr
33085     9-Apr
33086     9-Apr
33087     9-Apr
33088     9-Apr
33089     9-Apr
33090     9-Apr
33091     9-Apr
33092     9-Apr
33093     9-Apr
33094     9-Apr
33095     9-Apr
33096     9-Apr
33097     9-Apr
33098     9-Apr
33099     9-Apr
33100     9-Apr
33101     9-Apr
33102     9-Apr
33103     9-Apr
33104     9-Apr
33105     9-Apr
33106     9-Apr
33107     9-Apr
33108     9-Apr
33109     9-Apr
33110     9-Apr
33111     9-Apr
33112     9-Apr
33113     9-Apr
33114     9-Apr
33115     9-Aug
33116     9-Aug
33117     9-Aug
33118     9-Aug
33119     9-Aug
33120     9-Aug
33121     9-Aug
33122     9-Aug
33123     9-Aug
33124     9-Aug
33125     9-Aug
33126     9-Aug
33127     9-Aug
33128     9-Aug
33129     9-Aug
33130     9-Aug
33131     9-Aug
33132     9-Aug
33133     9-Aug
33134     9-Aug
33135     9-Aug
33136     9-Aug
33137     9-Aug
33138     9-Aug
33139     9-Aug
33140     9-Aug
33141     9-Aug
33142     9-Aug
33143     9-Aug
33144     9-Aug
33145     9-Aug
33146     9-Aug
33147     9-Aug
33148     9-Aug
33149     9-Aug
33150     9-Aug
33151     9-Aug
33152     9-Aug
33153     9-Aug
33154     9-Aug
33155     9-Aug
33156     9-Aug
33157     9-Aug
33158     9-Aug
33159     9-Aug
33160     9-Aug
33161     9-Aug
33162     9-Aug
33163     9-Aug
33164     9-Aug
33165     9-Aug
33166     9-Aug
33167     9-Aug
33168     9-Aug
33169     9-Aug
33170     9-Aug
33171     9-Aug
33172     9-Aug
33173     9-Aug
33174     9-Aug
33175     9-Aug
33176     9-Aug
33177     9-Aug
33178     9-Aug
33179     9-Aug
33180     9-Aug
33181     9-Aug
33182     9-Aug
33183     9-Aug
33184     9-Aug
33185     9-Aug
33186     9-Aug
33187     9-Aug
33188     9-Aug
33189     9-Aug
33190     9-Aug
33191     9-Aug
33192     9-Aug
33193     9-Aug
33194     9-Aug
33195     9-Aug
33196     9-Aug
33197     9-Aug
33198     9-Aug
33199     9-Aug
33200     9-Aug
33201     9-Aug
33202     9-Aug
33203     9-Aug
33204     9-Aug
33205     9-Aug
33206     9-Aug
33207     9-Aug
33208     9-Aug
33209     9-Aug
33210     9-Aug
33211     9-Aug
33212     9-Aug
33213     9-Aug
33214     9-Aug
33215     9-Aug
33216     9-Aug
33217     9-Aug
33218     9-Aug
33219     9-Aug
33220     9-Aug
33221     9-Aug
33222     9-Aug
33223     9-Aug
33224     9-Aug
33225     9-Aug
33226     9-Aug
33227     9-Aug
33228     9-Dec
33229     9-Dec
33230     9-Dec
33231     9-Dec
33232     9-Dec
33233     9-Dec
33234     9-Dec
33235     9-Dec
33236     9-Dec
33237     9-Dec
33238     9-Dec
33239     9-Dec
33240     9-Dec
33241     9-Dec
33242     9-Dec
33243     9-Dec
33244     9-Dec
33245     9-Dec
33246     9-Dec
33247     9-Dec
33248     9-Dec
33249     9-Dec
33250     9-Dec
33251     9-Dec
33252     9-Dec
33253     9-Dec
33254     9-Dec
33255     9-Dec
33256     9-Dec
33257     9-Dec
33258     9-Dec
33259     9-Dec
33260     9-Dec
33261     9-Dec
33262     9-Dec
33263     9-Dec
33264     9-Dec
33265     9-Dec
33266     9-Dec
33267     9-Dec
33268     9-Dec
33269     9-Dec
33270     9-Dec
33271     9-Dec
33272     9-Dec
33273     9-Dec
33274     9-Dec
33275     9-Dec
33276     9-Dec
33277     9-Dec
33278     9-Dec
33279     9-Dec
33280     9-Dec
33281     9-Dec
33282     9-Dec
33283     9-Dec
33284     9-Dec
33285     9-Dec
33286     9-Dec
33287     9-Dec
33288     9-Dec
33289     9-Dec
33290     9-Dec
33291     9-Dec
33292     9-Dec
33293     9-Dec
33294     9-Dec
33295     9-Dec
33296     9-Dec
33297     9-Dec
33298     9-Dec
33299     9-Dec
33300     9-Dec
33301     9-Dec
33302     9-Dec
33303     9-Dec
33304     9-Feb
33305     9-Feb
33306     9-Feb
33307     9-Feb
33308     9-Feb
33309     9-Feb
33310     9-Feb
33311     9-Feb
33312     9-Feb
33313     9-Feb
33314     9-Feb
33315     9-Feb
33316     9-Feb
33317     9-Feb
33318     9-Feb
33319     9-Feb
33320     9-Feb
33321     9-Feb
33322     9-Feb
33323     9-Feb
33324     9-Feb
33325     9-Feb
33326     9-Feb
33327     9-Feb
33328     9-Feb
33329     9-Feb
33330     9-Feb
33331     9-Feb
33332     9-Feb
33333     9-Feb
33334     9-Feb
33335     9-Feb
33336     9-Feb
33337     9-Feb
33338     9-Feb
33339     9-Feb
33340     9-Feb
33341     9-Feb
33342     9-Feb
33343     9-Feb
33344     9-Feb
33345     9-Feb
33346     9-Feb
33347     9-Feb
33348     9-Feb
33349     9-Feb
33350     9-Feb
33351     9-Feb
33352     9-Feb
33353     9-Feb
33354     9-Feb
33355     9-Feb
33356     9-Feb
33357     9-Feb
33358     9-Feb
33359     9-Feb
33360     9-Feb
33361     9-Feb
33362     9-Feb
33363     9-Feb
33364     9-Feb
33365     9-Feb
33366     9-Feb
33367     9-Feb
33368     9-Feb
33369     9-Feb
33370     9-Feb
33371     9-Feb
33372     9-Feb
33373     9-Feb
33374     9-Feb
33375     9-Feb
33376     9-Feb
33377     9-Feb
33378     9-Feb
33379     9-Feb
33380     9-Feb
33381     9-Jan
33382     9-Jan
33383     9-Jan
33384     9-Jan
33385     9-Jan
33386     9-Jan
33387     9-Jan
33388     9-Jan
33389     9-Jan
33390     9-Jan
33391     9-Jan
33392     9-Jan
33393     9-Jan
33394     9-Jan
33395     9-Jan
33396     9-Jan
33397     9-Jan
33398     9-Jan
33399     9-Jan
33400     9-Jan
33401     9-Jan
33402     9-Jan
33403     9-Jan
33404     9-Jan
33405     9-Jan
33406     9-Jan
33407     9-Jan
33408     9-Jan
33409     9-Jan
33410     9-Jan
33411     9-Jan
33412     9-Jan
33413     9-Jan
33414     9-Jan
33415     9-Jan
33416     9-Jan
33417     9-Jan
33418     9-Jan
33419     9-Jan
33420     9-Jan
33421     9-Jan
33422     9-Jan
33423     9-Jan
33424     9-Jan
33425     9-Jan
33426     9-Jan
33427     9-Jan
33428     9-Jan
33429     9-Jan
33430     9-Jan
33431     9-Jan
33432     9-Jan
33433     9-Jan
33434     9-Jan
33435     9-Jan
33436     9-Jan
33437     9-Jan
33438     9-Jan
33439     9-Jan
33440     9-Jan
33441     9-Jan
33442     9-Jan
33443     9-Jan
33444     9-Jan
33445     9-Jan
33446     9-Jan
33447     9-Jan
33448     9-Jan
33449     9-Jan
33450     9-Jan
33451     9-Jan
33452     9-Jan
33453     9-Jan
33454     9-Jan
33455     9-Jan
33456     9-Jan
33457     9-Jan
33458     9-Jan
33459     9-Jan
33460     9-Jan
33461     9-Jan
33462     9-Jan
33463     9-Jan
33464     9-Jul
33465     9-Jul
33466     9-Jul
33467     9-Jul
33468     9-Jul
33469     9-Jul
33470     9-Jul
33471     9-Jul
33472     9-Jul
33473     9-Jul
33474     9-Jul
33475     9-Jul
33476     9-Jul
33477     9-Jul
33478     9-Jul
33479     9-Jul
33480     9-Jul
33481     9-Jul
33482     9-Jul
33483     9-Jul
33484     9-Jul
33485     9-Jul
33486     9-Jul
33487     9-Jul
33488     9-Jul
33489     9-Jul
33490     9-Jul
33491     9-Jul
33492     9-Jul
33493     9-Jul
33494     9-Jul
33495     9-Jul
33496     9-Jul
33497     9-Jul
33498     9-Jul
33499     9-Jul
33500     9-Jul
33501     9-Jul
33502     9-Jul
33503     9-Jul
33504     9-Jul
33505     9-Jul
33506     9-Jul
33507     9-Jul
33508     9-Jul
33509     9-Jul
33510     9-Jul
33511     9-Jul
33512     9-Jul
33513     9-Jul
33514     9-Jul
33515     9-Jul
33516     9-Jul
33517     9-Jul
33518     9-Jul
33519     9-Jul
33520     9-Jul
33521     9-Jul
33522     9-Jul
33523     9-Jul
33524     9-Jul
33525     9-Jul
33526     9-Jul
33527     9-Jul
33528     9-Jul
33529     9-Jul
33530     9-Jul
33531     9-Jul
33532     9-Jul
33533     9-Jul
33534     9-Jul
33535     9-Jul
33536     9-Jul
33537     9-Jul
33538     9-Jul
33539     9-Jul
33540     9-Jul
33541     9-Jul
33542     9-Jul
33543     9-Jul
33544     9-Jul
33545     9-Jul
33546     9-Jul
33547     9-Jun
33548     9-Jun
33549     9-Jun
33550     9-Jun
33551     9-Jun
33552     9-Jun
33553     9-Jun
33554     9-Jun
33555     9-Jun
33556     9-Jun
33557     9-Jun
33558     9-Jun
33559     9-Jun
33560     9-Jun
33561     9-Jun
33562     9-Jun
33563     9-Jun
33564     9-Jun
33565     9-Jun
33566     9-Jun
33567     9-Jun
33568     9-Jun
33569     9-Jun
33570     9-Jun
33571     9-Jun
33572     9-Jun
33573     9-Jun
33574     9-Jun
33575     9-Jun
33576     9-Jun
33577     9-Jun
33578     9-Jun
33579     9-Jun
33580     9-Jun
33581     9-Jun
33582     9-Jun
33583     9-Jun
33584     9-Jun
33585     9-Jun
33586     9-Jun
33587     9-Jun
33588     9-Jun
33589     9-Jun
33590     9-Jun
33591     9-Jun
33592     9-Jun
33593     9-Jun
33594     9-Jun
33595     9-Jun
33596     9-Jun
33597     9-Jun
33598     9-Jun
33599     9-Jun
33600     9-Jun
33601     9-Jun
33602     9-Jun
33603     9-Jun
33604     9-Jun
33605     9-Jun
33606     9-Mar
33607     9-Mar
33608     9-Mar
33609     9-Mar
33610     9-Mar
33611     9-Mar
33612     9-Mar
33613     9-Mar
33614     9-Mar
33615     9-Mar
33616     9-Mar
33617     9-Mar
33618     9-Mar
33619     9-Mar
33620     9-Mar
33621     9-Mar
33622     9-Mar
33623     9-Mar
33624     9-Mar
33625     9-Mar
33626     9-Mar
33627     9-Mar
33628     9-Mar
33629     9-Mar
33630     9-Mar
33631     9-Mar
33632     9-Mar
33633     9-Mar
33634     9-Mar
33635     9-Mar
33636     9-Mar
33637     9-Mar
33638     9-Mar
33639     9-Mar
33640     9-Mar
33641     9-Mar
33642     9-Mar
33643     9-Mar
33644     9-Mar
33645     9-Mar
33646     9-Mar
33647     9-Mar
33648     9-Mar
33649     9-Mar
33650     9-Mar
33651     9-Mar
33652     9-Mar
33653     9-Mar
33654     9-Mar
33655     9-Mar
33656     9-Mar
33657     9-Mar
33658     9-Mar
33659     9-Mar
33660     9-Mar
33661     9-Mar
33662     9-Mar
33663     9-Mar
33664     9-Mar
33665     9-Mar
33666     9-Mar
33667     9-Mar
33668     9-Mar
33669     9-Mar
33670     9-Mar
33671     9-Mar
33672     9-Mar
33673     9-Mar
33674     9-May
33675     9-May
33676     9-May
33677     9-May
33678     9-May
33679     9-May
33680     9-May
33681     9-May
33682     9-May
33683     9-May
33684     9-May
33685     9-May
33686     9-May
33687     9-May
33688     9-May
33689     9-May
33690     9-May
33691     9-May
33692     9-May
33693     9-May
33694     9-May
33695     9-May
33696     9-May
33697     9-May
33698     9-May
33699     9-May
33700     9-May
33701     9-May
33702     9-May
33703     9-May
33704     9-May
33705     9-May
33706     9-May
33707     9-May
33708     9-May
33709     9-May
33710     9-May
33711     9-May
33712     9-May
33713     9-May
33714     9-May
33715     9-May
33716     9-May
33717     9-May
33718     9-May
33719     9-May
33720     9-May
33721     9-May
33722     9-May
33723     9-May
33724     9-May
33725     9-May
33726     9-May
33727     9-May
33728     9-May
33729     9-May
33730     9-May
33731     9-May
33732     9-May
33733     9-May
33734     9-May
33735     9-May
33736     9-May
33737     9-May
33738     9-May
33739     9-May
33740     9-Nov
33741     9-Nov
33742     9-Nov
33743     9-Nov
33744     9-Nov
33745     9-Nov
33746     9-Nov
33747     9-Nov
33748     9-Nov
33749     9-Nov
33750     9-Nov
33751     9-Nov
33752     9-Nov
33753     9-Nov
33754     9-Nov
33755     9-Nov
33756     9-Nov
33757     9-Nov
33758     9-Nov
33759     9-Nov
33760     9-Nov
33761     9-Nov
33762     9-Nov
33763     9-Nov
33764     9-Nov
33765     9-Nov
33766     9-Nov
33767     9-Nov
33768     9-Nov
33769     9-Nov
33770     9-Nov
33771     9-Nov
33772     9-Nov
33773     9-Nov
33774     9-Nov
33775     9-Nov
33776     9-Nov
33777     9-Nov
33778     9-Nov
33779     9-Nov
33780     9-Nov
33781     9-Nov
33782     9-Nov
33783     9-Nov
33784     9-Nov
33785     9-Nov
33786     9-Nov
33787     9-Nov
33788     9-Nov
33789     9-Nov
33790     9-Nov
33791     9-Nov
33792     9-Nov
33793     9-Nov
33794     9-Nov
33795     9-Nov
33796     9-Nov
33797     9-Nov
33798     9-Nov
33799     9-Nov
33800     9-Nov
33801     9-Nov
33802     9-Nov
33803     9-Nov
33804     9-Nov
33805     9-Nov
33806     9-Nov
33807     9-Nov
33808     9-Oct
33809     9-Oct
33810     9-Oct
33811     9-Oct
33812     9-Oct
33813     9-Oct
33814     9-Oct
33815     9-Oct
33816     9-Oct
33817     9-Oct
33818     9-Oct
33819     9-Oct
33820     9-Oct
33821     9-Oct
33822     9-Oct
33823     9-Oct
33824     9-Oct
33825     9-Oct
33826     9-Oct
33827     9-Oct
33828     9-Oct
33829     9-Oct
33830     9-Oct
33831     9-Oct
33832     9-Oct
33833     9-Oct
33834     9-Oct
33835     9-Oct
33836     9-Oct
33837     9-Oct
33838     9-Oct
33839     9-Oct
33840     9-Oct
33841     9-Oct
33842     9-Oct
33843     9-Oct
33844     9-Oct
33845     9-Oct
33846     9-Oct
33847     9-Oct
33848     9-Oct
33849     9-Oct
33850     9-Oct
33851     9-Oct
33852     9-Oct
33853     9-Oct
33854     9-Oct
33855     9-Oct
33856     9-Oct
33857     9-Oct
33858     9-Oct
33859     9-Oct
33860     9-Oct
33861     9-Oct
33862     9-Oct
33863     9-Oct
33864     9-Oct
33865     9-Oct
33866     9-Oct
33867     9-Oct
33868     9-Oct
33869     9-Oct
33870     9-Oct
33871     9-Oct
33872     9-Oct
33873     9-Oct
33874     9-Oct
33875     9-Oct
33876     9-Oct
33877     9-Oct
33878     9-Oct
33879     9-Oct
33880     9-Oct
33881     9-Oct
33882     9-Oct
33883     9-Oct
33884     9-Oct
33885     9-Oct
33886     9-Oct
33887     9-Oct
33888     9-Oct
33889     9-Oct
33890     9-Oct
33891     9-Oct
33892     9-Oct
33893     9-Oct
33894     9-Oct
33895     9-Oct
33896     9-Oct
33897     9-Oct
33898     9-Oct
33899     9-Oct
33900     9-Oct
33901     9-Oct
33902     9-Sep
33903     9-Sep
33904     9-Sep
33905     9-Sep
33906     9-Sep
33907     9-Sep
33908     9-Sep
33909     9-Sep
33910     9-Sep
33911     9-Sep
33912     9-Sep
33913     9-Sep
33914     9-Sep
33915     9-Sep
33916     9-Sep
33917     9-Sep
33918     9-Sep
33919     9-Sep
33920     9-Sep
33921     9-Sep
33922     9-Sep
33923     9-Sep
33924     9-Sep
33925     9-Sep
33926     9-Sep
33927     9-Sep
33928     9-Sep
33929     9-Sep
33930     9-Sep
33931     9-Sep
33932     9-Sep
33933     9-Sep
33934     9-Sep
33935     9-Sep
33936     9-Sep
33937     9-Sep
33938     9-Sep
33939     9-Sep
33940     9-Sep
33941     9-Sep
33942     9-Sep
33943     9-Sep
33944     9-Sep
33945     9-Sep
33946     9-Sep
33947     9-Sep
33948     9-Sep
33949     9-Sep
33950     9-Sep
33951     9-Sep
33952     9-Sep
33953     9-Sep
33954     9-Sep
33955     9-Sep
33956     9-Sep
33957     9-Sep
33958     9-Sep
33959     9-Sep
33960     9-Sep
33961     9-Sep
33962     9-Sep
33963     9-Sep
33964     9-Sep
33965     9-Sep
33966     9-Sep
33967     9-Sep
33968     9-Sep
33969     9-Sep
33970     9-Sep
33971     9-Sep
33972     9-Sep
33973     9-Sep
33974     9-Sep
33975     9-Sep
33976     9-Sep
33977     9-Sep
33978     9-Sep
33979     9-Sep
33980     9-Sep
33981     9-Sep
33982     9-Sep
33983     9-Sep
33984     9-Sep
33985     9-Sep
33986     9-Sep
33987     9-Sep
33988     9-Sep
33989     9-Sep
33990     9-Sep
33991     9-Sep
33992     9-Sep
33993     9-Sep
33994     9-Sep
33995     9-Sep
33996     9-Sep
33997     9-Sep
33998     9-Sep
33999     9-Sep
34000     9-Sep
34001     9-Sep
34002     9-Sep
34003     9-Sep
34004     9-Sep
34005     9-Sep
34006     9-Sep
34007     9-Sep
34008     9-Sep
34009     9-Sep
34010     9-Sep
34011     9-Sep
34012     9-Sep
34013     9-Sep
34014     9-Sep
34015     9-Sep
34016     9-Sep
34017    Apr-00
34018    Apr-00
34019    Apr-00
34020    Apr-00
34021    Apr-00
34022    Apr-00
34023    Apr-00
34024    Apr-00
34025    Apr-00
34026    Apr-00
34027    Apr-00
34028    Apr-00
34029    Apr-00
34030    Apr-00
34031    Apr-00
34032    Apr-00
34033    Apr-00
34034    Apr-00
34035    Apr-00
34036    Apr-00
34037    Apr-00
34038    Apr-00
34039    Apr-00
34040    Apr-00
34041    Apr-00
34042    Apr-00
34043    Apr-00
34044    Apr-00
34045    Apr-00
34046    Apr-00
34047    Apr-00
34048    Apr-00
34049    Apr-00
34050    Apr-00
34051    Apr-00
34052    Apr-00
34053    Apr-00
34054    Apr-00
34055    Apr-00
34056    Apr-00
34057    Apr-00
34058    Apr-00
34059    Apr-00
34060    Apr-00
34061    Apr-00
34062    Apr-00
34063    Apr-00
34064    Apr-00
34065    Apr-00
34066    Apr-00
34067    Apr-00
34068    Apr-00
34069    Apr-00
34070    Apr-00
34071    Apr-00
34072    Apr-00
34073    Apr-00
34074    Apr-00
34075    Apr-00
34076    Apr-00
34077    Apr-00
34078    Apr-00
34079    Apr-00
34080    Apr-00
34081    Apr-00
34082    Apr-00
34083    Apr-00
34084    Apr-00
34085    Apr-00
34086    Apr-00
34087    Apr-00
34088    Apr-00
34089    Apr-00
34090    Apr-00
34091    Apr-00
34092    Apr-00
34093    Apr-00
34094    Apr-00
34095    Apr-00
34096    Apr-00
34097    Apr-00
34098    Apr-00
34099    Apr-00
34100    Apr-00
34101    Apr-00
34102    Apr-00
34103    Apr-00
34104    Apr-00
34105    Apr-00
34106    Apr-00
34107    Apr-00
34108    Apr-00
34109    Apr-00
34110    Apr-00
34111    Apr-00
34112    Apr-00
34113    Apr-00
34114    Apr-00
34115    Apr-00
34116    Apr-00
34117    Apr-00
34118    Apr-00
34119    Apr-00
34120    Apr-00
34121    Apr-00
34122    Apr-00
34123    Apr-00
34124    Apr-00
34125    Apr-00
34126    Apr-00
34127    Apr-00
34128    Apr-00
34129    Apr-00
34130    Apr-00
34131    Apr-00
34132    Apr-00
34133    Apr-00
34134    Apr-00
34135    Apr-00
34136    Apr-00
34137    Apr-00
34138    Apr-00
34139    Apr-00
34140    Apr-00
34141    Apr-00
34142    Apr-00
34143    Apr-00
34144    Apr-00
34145    Apr-00
34146    Apr-00
34147    Apr-00
34148    Apr-00
34149    Apr-00
34150    Apr-00
34151    Apr-00
34152    Apr-00
34153    Apr-00
34154    Apr-00
34155    Apr-00
34156    Apr-00
34157    Apr-00
34158    Apr-00
34159    Apr-00
34160    Apr-00
34161    Apr-00
34162    Apr-00
34163    Apr-00
34164    Apr-00
34165    Apr-00
34166    Apr-00
34167    Apr-00
34168    Apr-00
34169    Apr-00
34170    Apr-00
34171    Apr-00
34172    Apr-00
34173    Apr-00
34174    Apr-00
34175    Apr-00
34176    Apr-00
34177    Apr-00
34178    Apr-00
34179    Apr-00
34180    Apr-00
34181    Apr-00
34182    Apr-00
34183    Apr-00
34184    Apr-00
34185    Apr-00
34186    Apr-00
34187    Apr-00
34188    Apr-00
34189    Apr-00
34190    Apr-00
34191    Apr-00
34192    Apr-00
34193    Apr-00
34194    Apr-00
34195    Apr-00
34196    Apr-00
34197    Apr-00
34198    Apr-00
34199    Apr-00
34200    Apr-00
34201    Apr-00
34202    Apr-00
34203    Apr-00
34204    Apr-00
34205    Apr-00
34206    Apr-00
34207    Apr-00
34208    Apr-00
34209    Apr-00
34210    Apr-00
34211    Apr-00
34212    Apr-00
34213    Apr-00
34214    Apr-00
34215    Apr-00
34216    Apr-00
34217    Apr-00
34218    Apr-00
34219    Apr-00
34220    Apr-00
34221    Apr-00
34222    Apr-00
34223    Apr-00
34224    Apr-00
34225    Apr-00
34226    Apr-00
34227    Apr-00
34228    Apr-00
34229    Apr-00
34230    Apr-00
34231    Apr-00
34232    Apr-00
34233    Apr-00
34234    Apr-00
34235    Apr-00
34236    Apr-00
34237    Apr-00
34238    Apr-00
34239    Apr-00
34240    Apr-00
34241    Apr-00
34242    Apr-00
34243    Apr-00
34244    Apr-00
34245    Apr-00
34246    Apr-00
34247    Apr-00
34248    Apr-00
34249    Apr-00
34250    Apr-00
34251    Apr-00
34252    Apr-00
34253    Apr-00
34254    Apr-00
34255    Apr-00
34256    Apr-00
34257    Apr-00
34258    Apr-00
34259    Apr-00
34260    Apr-00
34261    Apr-00
34262    Apr-00
34263    Apr-00
34264    Apr-00
34265    Apr-00
34266    Apr-00
34267    Apr-00
34268    Apr-00
34269    Apr-00
34270    Apr-00
34271    Apr-00
34272    Apr-00
34273    Apr-00
34274    Apr-00
34275    Apr-00
34276    Apr-00
34277    Apr-00
34278    Apr-00
34279    Apr-00
34280    Apr-00
34281    Apr-00
34282    Apr-00
34283    Apr-00
34284    Apr-00
34285    Apr-00
34286    Apr-00
34287    Apr-00
34288    Apr-00
34289    Apr-00
34290    Apr-00
34291    Apr-00
34292    Apr-00
34293    Apr-00
34294    Apr-00
34295    Apr-00
34296    Apr-00
34297    Apr-00
34298    Apr-00
34299    Apr-00
34300    Apr-00
34301    Apr-00
34302    Apr-00
34303    Apr-00
34304    Apr-00
34305    Apr-00
34306    Apr-00
34307    Apr-00
34308    Apr-00
34309    Apr-00
34310    Apr-00
34311    Apr-00
34312    Apr-00
34313    Apr-00
34314    Apr-00
34315    Apr-00
34316    Apr-00
34317    Apr-00
34318    Apr-00
34319    Apr-00
34320    Apr-00
34321    Apr-00
34322    Apr-00
34323    Apr-00
34324    Apr-00
34325    Apr-00
34326    Apr-00
34327    Apr-00
34328    Apr-00
34329    Apr-00
34330    Apr-00
34331    Apr-00
34332    Apr-00
34333    Apr-00
34334    Apr-00
34335    Apr-00
34336    Apr-00
34337    Apr-00
34338    Apr-00
34339    Apr-00
34340    Apr-00
34341    Apr-00
34342    Apr-00
34343    Apr-00
34344    Apr-00
34345    Apr-00
34346    Apr-00
34347    Apr-00
34348    Apr-58
34349    Apr-62
34350    Apr-63
34351    Apr-63
34352    Apr-64
34353    Apr-64
34354    Apr-65
34355    Apr-65
34356    Apr-65
34357    Apr-66
34358    Apr-66
34359    Apr-66
34360    Apr-66
34361    Apr-67
34362    Apr-67
34363    Apr-67
34364    Apr-67
34365    Apr-67
34366    Apr-67
34367    Apr-67
34368    Apr-68
34369    Apr-68
34370    Apr-68
34371    Apr-68
34372    Apr-69
34373    Apr-69
34374    Apr-69
34375    Apr-69
34376    Apr-70
34377    Apr-70
34378    Apr-70
34379    Apr-70
34380    Apr-70
34381    Apr-70
34382    Apr-71
34383    Apr-71
34384    Apr-71
34385    Apr-71
34386    Apr-71
34387    Apr-71
34388    Apr-71
34389    Apr-71
34390    Apr-72
34391    Apr-72
34392    Apr-72
34393    Apr-72
34394    Apr-72
34395    Apr-72
34396    Apr-72
34397    Apr-72
34398    Apr-72
34399    Apr-72
34400    Apr-72
34401    Apr-72
34402    Apr-72
34403    Apr-72
34404    Apr-72
34405    Apr-73
34406    Apr-73
34407    Apr-73
34408    Apr-73
34409    Apr-73
34410    Apr-73
34411    Apr-73
34412    Apr-74
34413    Apr-74
34414    Apr-74
34415    Apr-74
34416    Apr-74
34417    Apr-74
34418    Apr-74
34419    Apr-74
34420    Apr-74
34421    Apr-74
34422    Apr-74
34423    Apr-74
34424    Apr-75
34425    Apr-75
34426    Apr-75
34427    Apr-75
34428    Apr-75
34429    Apr-75
34430    Apr-75
34431    Apr-75
34432    Apr-75
34433    Apr-75
34434    Apr-75
34435    Apr-75
34436    Apr-75
34437    Apr-75
34438    Apr-76
34439    Apr-76
34440    Apr-76
34441    Apr-76
34442    Apr-76
34443    Apr-76
34444    Apr-76
34445    Apr-76
34446    Apr-76
34447    Apr-76
34448    Apr-76
34449    Apr-76
34450    Apr-76
34451    Apr-76
34452    Apr-76
34453    Apr-76
34454    Apr-76
34455    Apr-76
34456    Apr-76
34457    Apr-76
34458    Apr-76
34459    Apr-76
34460    Apr-77
34461    Apr-77
34462    Apr-77
34463    Apr-77
34464    Apr-77
34465    Apr-77
34466    Apr-77
34467    Apr-77
34468    Apr-77
34469    Apr-77
34470    Apr-77
34471    Apr-77
34472    Apr-77
34473    Apr-77
34474    Apr-77
34475    Apr-77
34476    Apr-77
34477    Apr-77
34478    Apr-77
34479    Apr-77
34480    Apr-77
34481    Apr-77
34482    Apr-77
34483    Apr-77
34484    Apr-78
34485    Apr-78
34486    Apr-78
34487    Apr-78
34488    Apr-78
34489    Apr-78
34490    Apr-78
34491    Apr-78
34492    Apr-78
34493    Apr-78
34494    Apr-78
34495    Apr-78
34496    Apr-78
34497    Apr-78
34498    Apr-78
34499    Apr-78
34500    Apr-78
34501    Apr-78
34502    Apr-78
34503    Apr-78
34504    Apr-79
34505    Apr-79
34506    Apr-79
34507    Apr-79
34508    Apr-79
34509    Apr-79
34510    Apr-79
34511    Apr-79
34512    Apr-79
34513    Apr-79
34514    Apr-79
34515    Apr-79
34516    Apr-79
34517    Apr-79
34518    Apr-79
34519    Apr-79
34520    Apr-79
34521    Apr-79
34522    Apr-79
34523    Apr-79
34524    Apr-79
34525    Apr-79
34526    Apr-79
34527    Apr-79
34528    Apr-79
34529    Apr-79
34530    Apr-79
34531    Apr-79
34532    Apr-79
34533    Apr-79
34534    Apr-79
34535    Apr-79
34536    Apr-79
34537    Apr-79
34538    Apr-79
34539    Apr-79
34540    Apr-79
34541    Apr-80
34542    Apr-80
34543    Apr-80
34544    Apr-80
34545    Apr-80
34546    Apr-80
34547    Apr-80
34548    Apr-80
34549    Apr-80
34550    Apr-80
34551    Apr-80
34552    Apr-80
34553    Apr-80
34554    Apr-80
34555    Apr-80
34556    Apr-80
34557    Apr-80
34558    Apr-80
34559    Apr-80
34560    Apr-80
34561    Apr-80
34562    Apr-80
34563    Apr-81
34564    Apr-81
34565    Apr-81
34566    Apr-81
34567    Apr-81
34568    Apr-81
34569    Apr-81
34570    Apr-81
34571    Apr-81
34572    Apr-81
34573    Apr-81
34574    Apr-81
34575    Apr-81
34576    Apr-81
34577    Apr-81
34578    Apr-81
34579    Apr-81
34580    Apr-81
34581    Apr-81
34582    Apr-81
34583    Apr-81
34584    Apr-81
34585    Apr-81
34586    Apr-81
34587    Apr-81
34588    Apr-81
34589    Apr-81
34590    Apr-81
34591    Apr-81
34592    Apr-81
34593    Apr-81
34594    Apr-81
34595    Apr-81
34596    Apr-81
34597    Apr-81
34598    Apr-81
34599    Apr-81
34600    Apr-81
34601    Apr-81
34602    Apr-81
34603    Apr-81
34604    Apr-81
34605    Apr-82
34606    Apr-82
34607    Apr-82
34608    Apr-82
34609    Apr-82
34610    Apr-82
34611    Apr-82
34612    Apr-82
34613    Apr-82
34614    Apr-82
34615    Apr-82
34616    Apr-82
34617    Apr-82
34618    Apr-82
34619    Apr-82
34620    Apr-82
34621    Apr-82
34622    Apr-82
34623    Apr-82
34624    Apr-82
34625    Apr-82
34626    Apr-82
34627    Apr-82
34628    Apr-82
34629    Apr-82
34630    Apr-82
34631    Apr-82
34632    Apr-82
34633    Apr-82
34634    Apr-82
34635    Apr-82
34636    Apr-82
34637    Apr-82
34638    Apr-82
34639    Apr-82
34640    Apr-82
34641    Apr-82
34642    Apr-82
34643    Apr-82
34644    Apr-83
34645    Apr-83
34646    Apr-83
34647    Apr-83
34648    Apr-83
34649    Apr-83
34650    Apr-83
34651    Apr-83
34652    Apr-83
34653    Apr-83
34654    Apr-83
34655    Apr-83
34656    Apr-83
34657    Apr-83
34658    Apr-83
34659    Apr-83
34660    Apr-83
34661    Apr-83
34662    Apr-83
34663    Apr-83
34664    Apr-83
34665    Apr-83
34666    Apr-83
34667    Apr-83
34668    Apr-83
34669    Apr-83
34670    Apr-83
34671    Apr-83
34672    Apr-83
34673    Apr-83
34674    Apr-83
34675    Apr-83
34676    Apr-83
34677    Apr-83
34678    Apr-83
34679    Apr-83
34680    Apr-83
34681    Apr-83
34682    Apr-83
34683    Apr-83
34684    Apr-83
34685    Apr-83
34686    Apr-83
34687    Apr-83
34688    Apr-83
34689    Apr-83
34690    Apr-83
34691    Apr-83
34692    Apr-83
34693    Apr-83
34694    Apr-83
34695    Apr-83
34696    Apr-83
34697    Apr-83
34698    Apr-84
34699    Apr-84
34700    Apr-84
34701    Apr-84
34702    Apr-84
34703    Apr-84
34704    Apr-84
34705    Apr-84
34706    Apr-84
34707    Apr-84
34708    Apr-84
34709    Apr-84
34710    Apr-84
34711    Apr-84
34712    Apr-84
34713    Apr-84
34714    Apr-84
34715    Apr-84
34716    Apr-84
34717    Apr-84
34718    Apr-84
34719    Apr-84
34720    Apr-84
34721    Apr-84
34722    Apr-84
34723    Apr-84
34724    Apr-84
34725    Apr-84
34726    Apr-84
34727    Apr-84
34728    Apr-84
34729    Apr-84
34730    Apr-84
34731    Apr-84
34732    Apr-84
34733    Apr-84
34734    Apr-84
34735    Apr-84
34736    Apr-84
34737    Apr-84
34738    Apr-84
34739    Apr-84
34740    Apr-84
34741    Apr-84
34742    Apr-84
34743    Apr-84
34744    Apr-84
34745    Apr-84
34746    Apr-84
34747    Apr-84
34748    Apr-84
34749    Apr-84
34750    Apr-84
34751    Apr-84
34752    Apr-84
34753    Apr-84
34754    Apr-84
34755    Apr-84
34756    Apr-84
34757    Apr-84
34758    Apr-84
34759    Apr-84
34760    Apr-84
34761    Apr-84
34762    Apr-84
34763    Apr-84
34764    Apr-84
34765    Apr-84
34766    Apr-85
34767    Apr-85
34768    Apr-85
34769    Apr-85
34770    Apr-85
34771    Apr-85
34772    Apr-85
34773    Apr-85
34774    Apr-85
34775    Apr-85
34776    Apr-85
34777    Apr-85
34778    Apr-85
34779    Apr-85
34780    Apr-85
34781    Apr-85
34782    Apr-85
34783    Apr-85
34784    Apr-85
34785    Apr-85
34786    Apr-85
34787    Apr-85
34788    Apr-85
34789    Apr-85
34790    Apr-85
34791    Apr-85
34792    Apr-85
34793    Apr-85
34794    Apr-85
34795    Apr-85
34796    Apr-85
34797    Apr-85
34798    Apr-85
34799    Apr-85
34800    Apr-85
34801    Apr-85
34802    Apr-85
34803    Apr-85
34804    Apr-85
34805    Apr-85
34806    Apr-85
34807    Apr-85
34808    Apr-85
34809    Apr-85
34810    Apr-85
34811    Apr-85
34812    Apr-85
34813    Apr-85
34814    Apr-85
34815    Apr-85
34816    Apr-85
34817    Apr-85
34818    Apr-85
34819    Apr-85
34820    Apr-85
34821    Apr-85
34822    Apr-85
34823    Apr-85
34824    Apr-85
34825    Apr-85
34826    Apr-85
34827    Apr-85
34828    Apr-85
34829    Apr-85
34830    Apr-85
34831    Apr-86
34832    Apr-86
34833    Apr-86
34834    Apr-86
34835    Apr-86
34836    Apr-86
34837    Apr-86
34838    Apr-86
34839    Apr-86
34840    Apr-86
34841    Apr-86
34842    Apr-86
34843    Apr-86
34844    Apr-86
34845    Apr-86
34846    Apr-86
34847    Apr-86
34848    Apr-86
34849    Apr-86
34850    Apr-86
34851    Apr-86
34852    Apr-86
34853    Apr-86
34854    Apr-86
34855    Apr-86
34856    Apr-86
34857    Apr-86
34858    Apr-86
34859    Apr-86
34860    Apr-86
34861    Apr-86
34862    Apr-86
34863    Apr-86
34864    Apr-86
34865    Apr-86
34866    Apr-86
34867    Apr-86
34868    Apr-86
34869    Apr-86
34870    Apr-86
34871    Apr-86
34872    Apr-86
34873    Apr-86
34874    Apr-86
34875    Apr-86
34876    Apr-86
34877    Apr-86
34878    Apr-86
34879    Apr-86
34880    Apr-86
34881    Apr-86
34882    Apr-86
34883    Apr-86
34884    Apr-86
34885    Apr-86
34886    Apr-86
34887    Apr-86
34888    Apr-86
34889    Apr-86
34890    Apr-86
34891    Apr-86
34892    Apr-86
34893    Apr-86
34894    Apr-86
34895    Apr-86
34896    Apr-86
34897    Apr-86
34898    Apr-86
34899    Apr-86
34900    Apr-86
34901    Apr-86
34902    Apr-86
34903    Apr-86
34904    Apr-86
34905    Apr-86
34906    Apr-86
34907    Apr-86
34908    Apr-86
34909    Apr-86
34910    Apr-86
34911    Apr-86
34912    Apr-86
34913    Apr-86
34914    Apr-86
34915    Apr-86
34916    Apr-86
34917    Apr-86
34918    Apr-86
34919    Apr-86
34920    Apr-86
34921    Apr-86
34922    Apr-86
34923    Apr-86
34924    Apr-86
34925    Apr-86
34926    Apr-86
34927    Apr-86
34928    Apr-86
34929    Apr-86
34930    Apr-86
34931    Apr-86
34932    Apr-87
34933    Apr-87
34934    Apr-87
34935    Apr-87
34936    Apr-87
34937    Apr-87
34938    Apr-87
34939    Apr-87
34940    Apr-87
34941    Apr-87
34942    Apr-87
34943    Apr-87
34944    Apr-87
34945    Apr-87
34946    Apr-87
34947    Apr-87
34948    Apr-87
34949    Apr-87
34950    Apr-87
34951    Apr-87
34952    Apr-87
34953    Apr-87
34954    Apr-87
34955    Apr-87
34956    Apr-87
34957    Apr-87
34958    Apr-87
34959    Apr-87
34960    Apr-87
34961    Apr-87
34962    Apr-87
34963    Apr-87
34964    Apr-87
34965    Apr-87
34966    Apr-87
34967    Apr-87
34968    Apr-87
34969    Apr-87
34970    Apr-87
34971    Apr-87
34972    Apr-87
34973    Apr-87
34974    Apr-87
34975    Apr-87
34976    Apr-87
34977    Apr-87
34978    Apr-87
34979    Apr-87
34980    Apr-87
34981    Apr-87
34982    Apr-87
34983    Apr-87
34984    Apr-87
34985    Apr-87
34986    Apr-87
34987    Apr-87
34988    Apr-87
34989    Apr-87
34990    Apr-87
34991    Apr-87
34992    Apr-87
34993    Apr-87
34994    Apr-87
34995    Apr-87
34996    Apr-87
34997    Apr-87
34998    Apr-87
34999    Apr-87
Name: Credit_Earliest_MonYY, dtype: object

From the above, you can see that there's a difference of datatype for Credit_Earliest_MonYY.

In [137]:
# credit_earliest date
test["Credit_Earliest_MonYY"][:34017] = test["Credit_Earliest_MonYY"][:34017].apply(
    lambda x: datetime.strptime(str(x + "-22"), "%d-%b-%y"))

test["Credit_Earliest_MonYY"][34017:] = test["Credit_Earliest_MonYY"][34017:].apply(
    lambda x: datetime.strptime(str(x), "%b-%y"))
In [138]:
test['credit_earliest_month'] = pd.to_datetime(test['Credit_Earliest_MonYY']).dt.month
test['credit_earliest_year']  = pd.to_datetime(test['Credit_Earliest_MonYY']).dt.year
test['credit_earliest_year']  = test['credit_earliest_year'].apply(lambda x: str(x)[-2:]).astype("int")
In [139]:
# issued_date
test['issued_month'] = test['Issued_MonYY'].apply(lambda x: str(x)[-3:])
test['issued_year'] = test['Issued_MonYY'].apply(lambda x: str(x)[:2])

test['issued_month'] = test['issued_month'].apply(lambda x: month(x))
test['issued_year'] = test['issued_year'].apply(lambda x: year(x))
test['issued_year'] = test['issued_year'].apply(lambda x: str(x)[-2:]).astype("int")
In [140]:
test=test.drop(columns = ["Credit_Earliest_MonYY","Issued_MonYY","index"])
In [141]:
test.head()
Out[141]:
Loan_Requested Loan_Grade Years_Employed Home_Ownership Annual_Income Verification loan_Cat State Debit_Payment_Ratio Delinquency_Frequency Inquiries_Count Open_Credit_Line_Count Derogatory_Public_Record_Count Total_Credit Credit_Utilization_Rate Total_Credit_Line_Count Initial_Status pay_36months credit_earliest_month credit_earliest_year issued_month issued_year
0 30000 C 10 MORTGAGE 150000.0 verified debt_consolidation MD 14.24 0 1 17 0 20383 87.50% 34 w 0 4 22 2 15
1 12000 A 5-9 MORTGAGE 105000.0 not verified credit_card HI 8.53 1 0 8 0 30372 58% 28 f 0 4 22 2 15
2 20000 B 10 MORTGAGE 85000.0 verified debt_consolidation MA 17.52 0 0 7 0 18035 87.50% 18 w 0 4 22 2 15
3 9000 A 10 MORTGAGE 56000.0 verified debt_consolidation CA 6.24 2 0 11 0 5547 55.50% 16 w 0 4 22 2 15
4 11000 B 5-9 RENT 80000.0 not verified debt_consolidation CA 17.16 6 0 13 0 2651 39% 33 f 0 4 22 1 15
In [142]:
test.isna().sum()
Out[142]:
Loan_Requested                     0
Loan_Grade                         0
Years_Employed                     0
Home_Ownership                     0
Annual_Income                      0
Verification                       0
loan_Cat                           0
State                              0
Debit_Payment_Ratio                0
Delinquency_Frequency              0
Inquiries_Count                    0
Open_Credit_Line_Count             0
Derogatory_Public_Record_Count     0
Total_Credit                       0
Credit_Utilization_Rate           30
Total_Credit_Line_Count            0
Initial_Status                     0
pay_36months                       0
credit_earliest_month              0
credit_earliest_year               0
issued_month                       0
issued_year                        0
dtype: int64
In [143]:
#change State to Region
test["Region"] = test["State"].map(states)
test = test.drop("State", axis=1)
In [144]:
# change Delinquency_Frequency to has_delinquency
test['has_delinquency'] = test['Delinquency_Frequency'].apply(lambda x: 1 if x != 0 else 0)
test['has_delinquency']=test['has_delinquency'].astype("category")
test = test.drop(columns = ['Delinquency_Frequency'])
In [145]:
# change Open_Credit_Line_Count to log_Open_Credit_Line_Count
test['log_Open_Credit_Line_Count'] = np.log10(test['Open_Credit_Line_Count'])
test['log_Open_Credit_Line_Count'] .replace([-np.inf], 0, inplace = True)
test=test.drop("Open_Credit_Line_Count", axis=1)
In [146]:
#Derogatory_Public_Record_Count
test['has_derogatory'] = test['Derogatory_Public_Record_Count'].apply(lambda x: 1 if x != 0 else 0)
test['has_derogatory']=test['has_derogatory'].astype("category")
test = test.drop(columns = ['Derogatory_Public_Record_Count'])
In [147]:
# Credit_Utilization_Rate
test['Credit_Utilization_Rate'] = test['Credit_Utilization_Rate'].str.replace("%","")
test['Credit_Utilization_Rate']= pd.to_numeric(test['Credit_Utilization_Rate'])

test_mean_value=test['Credit_Utilization_Rate'].mean()
test.loc['Credit_Utilization_Rate']=test['Credit_Utilization_Rate'].fillna(value=test_mean_value, inplace=True)
In [148]:
# Total_Credit_Line_Count
#test = test[test['Total_Credit_Line_Count'] <= 53]
In [149]:
test.isna().sum()
Out[149]:
Loan_Requested                1
Loan_Grade                    1
Years_Employed                1
Home_Ownership                1
Annual_Income                 1
Verification                  1
loan_Cat                      1
Debit_Payment_Ratio           1
Inquiries_Count               1
Total_Credit                  1
Credit_Utilization_Rate       1
Total_Credit_Line_Count       1
Initial_Status                1
pay_36months                  1
credit_earliest_month         1
credit_earliest_year          1
issued_month                  1
issued_year                   1
Region                        1
has_delinquency               1
log_Open_Credit_Line_Count    1
has_derogatory                1
dtype: int64
In [150]:
test.info()
<class 'pandas.core.frame.DataFrame'>
Index: 80001 entries, 0 to Credit_Utilization_Rate
Data columns (total 22 columns):
 #   Column                      Non-Null Count  Dtype  
---  ------                      --------------  -----  
 0   Loan_Requested              80000 non-null  float64
 1   Loan_Grade                  80000 non-null  object 
 2   Years_Employed              80000 non-null  object 
 3   Home_Ownership              80000 non-null  object 
 4   Annual_Income               80000 non-null  float64
 5   Verification                80000 non-null  object 
 6   loan_Cat                    80000 non-null  object 
 7   Debit_Payment_Ratio         80000 non-null  float64
 8   Inquiries_Count             80000 non-null  float64
 9   Total_Credit                80000 non-null  float64
 10  Credit_Utilization_Rate     80000 non-null  float64
 11  Total_Credit_Line_Count     80000 non-null  float64
 12  Initial_Status              80000 non-null  object 
 13  pay_36months                80000 non-null  float64
 14  credit_earliest_month       80000 non-null  float64
 15  credit_earliest_year        80000 non-null  float64
 16  issued_month                80000 non-null  float64
 17  issued_year                 80000 non-null  float64
 18  Region                      80000 non-null  object 
 19  has_delinquency             80000 non-null  float64
 20  log_Open_Credit_Line_Count  80000 non-null  float64
 21  has_derogatory              80000 non-null  float64
dtypes: float64(15), object(7)
memory usage: 14.0+ MB
In [151]:
# Get one-hot encoding
test = pd.get_dummies(test, drop_first=True)
test.head()
Out[151]:
Loan_Requested Annual_Income Debit_Payment_Ratio Inquiries_Count Total_Credit Credit_Utilization_Rate Total_Credit_Line_Count pay_36months credit_earliest_month credit_earliest_year issued_month issued_year has_delinquency log_Open_Credit_Line_Count has_derogatory Loan_Grade_B Loan_Grade_C Loan_Grade_D Loan_Grade_E Loan_Grade_F Loan_Grade_G Years_Employed_10 Years_Employed_5-9 Home_Ownership_OWN Home_Ownership_RENT Verification_verified loan_Cat_credit_card loan_Cat_debt_consolidation loan_Cat_home_improvement loan_Cat_house loan_Cat_major_purchase loan_Cat_medical loan_Cat_moving loan_Cat_other loan_Cat_renewable_energy loan_Cat_small_business loan_Cat_vacation loan_Cat_wedding Initial_Status_w Region_Northeast Region_Other Region_South Region_West
0 30000.0 150000.0 14.24 1.0 20383.0 87.5 34.0 0.0 4.0 22.0 2.0 15.0 0.0 1.230449 0.0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 12000.0 105000.0 8.53 0.0 30372.0 58.0 28.0 0.0 4.0 22.0 2.0 15.0 1.0 0.903090 0.0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
2 20000.0 85000.0 17.52 0.0 18035.0 87.5 18.0 0.0 4.0 22.0 2.0 15.0 0.0 0.845098 0.0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
3 9000.0 56000.0 6.24 0.0 5547.0 55.5 16.0 0.0 4.0 22.0 2.0 15.0 1.0 1.041393 0.0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
4 11000.0 80000.0 17.16 0.0 2651.0 39.0 33.0 0.0 4.0 22.0 1.0 15.0 1.0 1.113943 0.0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
In [152]:
test.info()
<class 'pandas.core.frame.DataFrame'>
Index: 80001 entries, 0 to Credit_Utilization_Rate
Data columns (total 43 columns):
 #   Column                       Non-Null Count  Dtype  
---  ------                       --------------  -----  
 0   Loan_Requested               80000 non-null  float64
 1   Annual_Income                80000 non-null  float64
 2   Debit_Payment_Ratio          80000 non-null  float64
 3   Inquiries_Count              80000 non-null  float64
 4   Total_Credit                 80000 non-null  float64
 5   Credit_Utilization_Rate      80000 non-null  float64
 6   Total_Credit_Line_Count      80000 non-null  float64
 7   pay_36months                 80000 non-null  float64
 8   credit_earliest_month        80000 non-null  float64
 9   credit_earliest_year         80000 non-null  float64
 10  issued_month                 80000 non-null  float64
 11  issued_year                  80000 non-null  float64
 12  has_delinquency              80000 non-null  float64
 13  log_Open_Credit_Line_Count   80000 non-null  float64
 14  has_derogatory               80000 non-null  float64
 15  Loan_Grade_B                 80001 non-null  uint8  
 16  Loan_Grade_C                 80001 non-null  uint8  
 17  Loan_Grade_D                 80001 non-null  uint8  
 18  Loan_Grade_E                 80001 non-null  uint8  
 19  Loan_Grade_F                 80001 non-null  uint8  
 20  Loan_Grade_G                 80001 non-null  uint8  
 21  Years_Employed_10            80001 non-null  uint8  
 22  Years_Employed_5-9           80001 non-null  uint8  
 23  Home_Ownership_OWN           80001 non-null  uint8  
 24  Home_Ownership_RENT          80001 non-null  uint8  
 25  Verification_verified        80001 non-null  uint8  
 26  loan_Cat_credit_card         80001 non-null  uint8  
 27  loan_Cat_debt_consolidation  80001 non-null  uint8  
 28  loan_Cat_home_improvement    80001 non-null  uint8  
 29  loan_Cat_house               80001 non-null  uint8  
 30  loan_Cat_major_purchase      80001 non-null  uint8  
 31  loan_Cat_medical             80001 non-null  uint8  
 32  loan_Cat_moving              80001 non-null  uint8  
 33  loan_Cat_other               80001 non-null  uint8  
 34  loan_Cat_renewable_energy    80001 non-null  uint8  
 35  loan_Cat_small_business      80001 non-null  uint8  
 36  loan_Cat_vacation            80001 non-null  uint8  
 37  loan_Cat_wedding             80001 non-null  uint8  
 38  Initial_Status_w             80001 non-null  uint8  
 39  Region_Northeast             80001 non-null  uint8  
 40  Region_Other                 80001 non-null  uint8  
 41  Region_South                 80001 non-null  uint8  
 42  Region_West                  80001 non-null  uint8  
dtypes: float64(15), uint8(28)
memory usage: 11.9+ MB
In [153]:
test[test.Loan_Requested.isnull()]
test = test.dropna(subset = ['Loan_Requested'],axis =0)
In [154]:
#check the columns difference
col1 = list(test.columns)
col2 = list(df.columns)
In [155]:
for c in df.columns:
    if c not in test.columns:
        print(c)
Interest_Rate
Loan_Grade_Others
Home_Ownership_OTHER
loan_Cat_educational
In [156]:
# filling in the missing columns and fill in 0, 1 values according to the proportion in training set
test['Loan_Grade_Others'] = np.random.choice([0, 1], size=len(test), p=[0.85, 0.15])
test['Home_Ownership_OTHER'] = np.random.choice([0, 1], size=len(test), p=[0.84, 0.16])
test['loan_Cat_educational'] = np.random.choice([0, 1], size=len(test), p=[0.99, 0.01])
In [157]:
print(test.shape)
print(df.shape)
(80000, 46)
(317178, 47)
In [158]:
df.columns
Out[158]:
Index(['Interest_Rate', 'Loan_Requested', 'Annual_Income',
       'Debit_Payment_Ratio', 'Inquiries_Count', 'Total_Credit',
       'Credit_Utilization_Rate', 'Total_Credit_Line_Count', 'pay_36months',
       'issued_month', 'issued_year', 'credit_earliest_month',
       'credit_earliest_year', 'has_delinquency', 'log_Open_Credit_Line_Count',
       'has_derogatory', 'Loan_Grade_B', 'Loan_Grade_C', 'Loan_Grade_D',
       'Loan_Grade_E', 'Loan_Grade_F', 'Loan_Grade_G', 'Loan_Grade_Others',
       'Years_Employed_10', 'Years_Employed_5-9', 'Home_Ownership_OTHER',
       'Home_Ownership_OWN', 'Home_Ownership_RENT', 'Verification_verified',
       'loan_Cat_credit_card', 'loan_Cat_debt_consolidation',
       'loan_Cat_educational', 'loan_Cat_home_improvement', 'loan_Cat_house',
       'loan_Cat_major_purchase', 'loan_Cat_medical', 'loan_Cat_moving',
       'loan_Cat_other', 'loan_Cat_renewable_energy',
       'loan_Cat_small_business', 'loan_Cat_vacation', 'loan_Cat_wedding',
       'Initial_Status_w', 'Region_Northeast', 'Region_Other', 'Region_South',
       'Region_West'],
      dtype='object')
In [159]:
test.columns
Out[159]:
Index(['Loan_Requested', 'Annual_Income', 'Debit_Payment_Ratio',
       'Inquiries_Count', 'Total_Credit', 'Credit_Utilization_Rate',
       'Total_Credit_Line_Count', 'pay_36months', 'credit_earliest_month',
       'credit_earliest_year', 'issued_month', 'issued_year',
       'has_delinquency', 'log_Open_Credit_Line_Count', 'has_derogatory',
       'Loan_Grade_B', 'Loan_Grade_C', 'Loan_Grade_D', 'Loan_Grade_E',
       'Loan_Grade_F', 'Loan_Grade_G', 'Years_Employed_10',
       'Years_Employed_5-9', 'Home_Ownership_OWN', 'Home_Ownership_RENT',
       'Verification_verified', 'loan_Cat_credit_card',
       'loan_Cat_debt_consolidation', 'loan_Cat_home_improvement',
       'loan_Cat_house', 'loan_Cat_major_purchase', 'loan_Cat_medical',
       'loan_Cat_moving', 'loan_Cat_other', 'loan_Cat_renewable_energy',
       'loan_Cat_small_business', 'loan_Cat_vacation', 'loan_Cat_wedding',
       'Initial_Status_w', 'Region_Northeast', 'Region_Other', 'Region_South',
       'Region_West', 'Loan_Grade_Others', 'Home_Ownership_OTHER',
       'loan_Cat_educational'],
      dtype='object')
In [160]:
col=['Loan_Requested', 'Annual_Income',
       'Debit_Payment_Ratio', 'Inquiries_Count', 'Total_Credit',
       'Credit_Utilization_Rate', 'Total_Credit_Line_Count', 'pay_36months',
       'issued_month', 'issued_year', 'credit_earliest_month',
       'credit_earliest_year', 'has_delinquency', 'log_Open_Credit_Line_Count',
       'has_derogatory', 'Loan_Grade_B', 'Loan_Grade_C', 'Loan_Grade_D',
       'Loan_Grade_E', 'Loan_Grade_F', 'Loan_Grade_G', 'Loan_Grade_Others',
       'Years_Employed_10', 'Years_Employed_5-9', 'Home_Ownership_OTHER',
       'Home_Ownership_OWN', 'Home_Ownership_RENT', 'Verification_verified',
       'loan_Cat_credit_card', 'loan_Cat_debt_consolidation',
       'loan_Cat_educational', 'loan_Cat_home_improvement', 'loan_Cat_house',
       'loan_Cat_major_purchase', 'loan_Cat_medical', 'loan_Cat_moving',
       'loan_Cat_other', 'loan_Cat_renewable_energy',
       'loan_Cat_small_business', 'loan_Cat_vacation', 'loan_Cat_wedding',
       'Initial_Status_w', 'Region_Northeast', 'Region_Other', 'Region_South',
       'Region_West']
In [161]:
test = test[col]

Apply linear model¶

In [162]:
test_pred = lr.predict(test)

test = pd.read_csv("Holdout for Testing.csv")
predict = pd.DataFrame(
    {"Loan_Id": test["X2"], "Predicted_Interest_Rate": test_pred}
)
In [163]:
# "Titanic Results from" *insert your name or UChicago net ID.
predict.to_csv("Loan_Results_YichinTzou.csv", index=False)

Summary¶

From the above 4 machine learning models, we choose Linear regression model, since it performed without underfitting/overfitting problem, and has lowest RMSE comparing other 3 models. Yet, Since the linear regression has low RMSE=1.82, meaning that there's still a lot of progress can be done in the future,such as doing more work on parameter tuning. From the GB testing, we can know that there's underfitting situation, since the TRAIN RMSE~CV RMSE>TEST RMSE, which we will also work on in the furture. Also another big learning, always check the testing data you're handling, there might be other thing that you didn't handle in the previous step of cleaning.

Things I learned:

  1. Start with exploratory data analysis, and check the missing value first
  2. Check the test data's outcome, since it might not be the same as training data.
In [ ]: